Arbeiten mit Excel in Rust: Überblick über Bibliotheken und Codebeispiele
Rust ist eine systemnahe Programmiersprache, die zunehmend für die Erstellung leistungsstarker Dienstprogramme verwendet wird, einschließlich der Verarbeitung von Tabellendaten. Im Gegensatz zu Python, wo pandas oder openpyxl der Standard sind, ist das Ökosystem für die Arbeit mit Excel in Rust weniger umfangreich, bietet aber mehrere ausgereifte und schnelle Lösungen. In diesem Artikel werden wir drei Hauptbibliotheken behandeln: rust_xlsxwriter (Schreiben), calamine (Lesen) und xlsx (universell). Sie erfahren, wie Sie XLSX-Dateien mit Rust lesen, erstellen und ändern.
Warum Rust für Excel verwenden?
Die wichtigsten Vorteile von Rust bei der Arbeit mit Tabellen:
- Geschwindigkeit — kompilierter Code verarbeitet Millionen von Zeilen schneller als interpretierte Alternativen.
- Sicherheit — das strenge Typsystem und das Eigentümerschaftsmodell verhindern Speicherlecks und Zugriffsfehler.
- Plattformunabhängigkeit — Binärdateien laufen auf Windows, Linux, macOS ohne Abhängigkeiten.
- Kleine Größe — die endgültige ausführbare Datei kann kleiner als 5 MB sein.
1. Excel schreiben: rust_xlsxwriter
rust_xlsxwriter ist ein Fork der beliebten Bibliothek xlsxwriter, der für Rust angepasst wurde. Sie ermöglicht das Erstellen von XLSX-Dateien von Grund auf und unterstützt Formatierung, Zellenzusammenführung, Diagramme und benutzerdefinierte Stile.
Installation:
// Cargo.toml[dependencies]rust_xlsxwriter = "0.64"Beispiel: Erstellen eines einfachen Berichts
use rust_xlsxwriter::*;
fn main() -> Result<(), XlsxError> { let mut workbook = Workbook::new(); let sheet = workbook.add_worksheet();
// Überschrift let header_format = Format::new() .set_bold() .set_font_color(Color::White) .set_background_color(Color::Blue);
sheet.write_string_with_format(0, 0, "Name", &header_format)?; sheet.write_string_with_format(0, 1, "Verkäufe", &header_format)?; sheet.write_string_with_format(0, 2, "Datum", &header_format)?;
// Daten let data = vec![ ("Produkt A", 1500, "2024-01-15"), ("Produkt B", 2300, "2024-01-16"), ("Produkt C", 800, "2024-01-17"), ];
for (row, (name, sales, date)) in data.iter().enumerate() { sheet.write_string(row as u32 + 1, 0, name)?; sheet.write_number(row as u32 + 1, 1, *sales as f64)?; sheet.write_string(row as u32 + 1, 2, date)?; }
// Automatische Spaltenbreite sheet.set_column_width(0, 15)?; sheet.set_column_width(1, 12)?; sheet.set_column_width(2, 14)?;
workbook.save("report.xlsx")?; println!("Datei report.xlsx erstellt"); Ok(())}Die Bibliothek unterstützt alle grundlegenden Typen: Zahlen, Zeichenketten, Daten, Formeln, Hyperlinks. Für die Formatierung stehen Schriftarten, Füllungen, Rahmen und Ausrichtung zur Verfügung.
2. Excel lesen: calamine
calamine ist ein schneller Parser für XLSX/XLS/XLSB/ODS-Dateien. Er verwendet keine externen Abhängigkeiten und arbeitet nur lesend. Ideal zum Extrahieren von Daten aus großen Tabellen.
Installation:
[dependencies]calamine = "0.24"Beispiel: Alle Daten aus einem Blatt lesen
use calamine::{open_workbook, Reader, Xlsx};
fn main() -> Result<(), Box> { let path = "report.xlsx"; let mut workbook: Xlsx<_> = open_workbook(path)?;
// Erstes Blatt abrufen if let Some(Ok(range)) = workbook.worksheet_range("Sheet1") { for row in range.rows() { for cell in row { // Zellenwert als Zeichenkette ausgeben print!("{} | ", cell.to_string()); } println!(); Auch in der Bibliothek
node-cache: Einfaches und effizientes Caching in Node.js
Kryptographie in C# (.NET): Verschlüsselung und Hashing von Daten
Arbeiten mit Bildern in TypeScript: Bibliotheken, Werkzeuge und Codebeispiele