Arbeiten mit Excel in Rust: Bibliotheksübersicht und Codebeispiele
Die Sprache Rust, bekannt für ihre Leistung und Sicherheit, bietet hervorragende Möglichkeiten für die Arbeit mit Excel-Tabellen. In diesem Artikel betrachten wir die drei beliebtesten Bibliotheken: rust_xlsxwriter, calamine und xlsx. Sie erfahren, wie Sie Dateien im .xlsx-Format lesen, erstellen und ändern, und lernen erweiterte Formatierungsfunktionen anzuwenden.
Warum Rust für die Arbeit mit Excel?
Rust ist ideal für Datenverarbeitungsaufgaben aufgrund von:
- Nullkosten-Abstraktionen – hohe Geschwindigkeit bei der Arbeit mit großen Dateien;
- Sicherer Speicherverwaltung – Vermeidung von Speicherlecks und Segmentation Faults;
- Plattformunabhängigkeit – Code läuft unter Windows, macOS und Linux;
- Hervorragender Integration mit anderen Systemen über FFI.
Bibliothek rust_xlsxwriter: Erstellen von Excel-Dateien
rust_xlsxwriter ist eine moderne Bibliothek zum Erstellen von Excel-Dateien mit umfangreichen Formatierungsmöglichkeiten. Sie unterstützt Stile, Zellenverbünde, Formeln und bedingte Formatierung.
Installation
Fügen Sie in Cargo.toml hinzu:
[dependencies]rust_xlsxwriter = "0.77"Beispiel: Erstellen eines Berichts mit Formatierung
Wir erstellen eine Datei mit Kopfzeilen, Daten und einer Formel:
use rust_xlsxwriter::*;
fn main() -> Result<(), XlsxError> { let mut workbook = Workbook::new(); let worksheet = workbook.add_worksheet();
// Stile erstellen let header_format = Format::new() .set_bold() .set_font_color(Color::White) .set_background_color(Color::Blue) .set_border(FormatBorder::Thin);
let money_format = Format::new() .set_num_format("$#,##0.00") .set_border(FormatBorder::Thin);
// Kopfzeilen worksheet.write_with_format(0, 0, "Produkt", &header_format)?; worksheet.write_with_format(0, 1, "Menge", &header_format)?; worksheet.write_with_format(0, 2, "Preis", &header_format)?; worksheet.write_with_format(0, 3, "Summe", &header_format)?;
// Daten let items = vec![ ("Laptop", 5, 1200.00), ("Maus", 10, 25.50), ("Tastatur", 7, 45.00), ];
for (i, (name, qty, price)) in items.iter().enumerate() { let row = i as u32 + 1; worksheet.write(row, 0, name)?; worksheet.write(row, 1, *qty)?; worksheet.write_with_format(row, 2, *price, &money_format)?; // Formel: Menge * Preis worksheet.write_formula(row, 3, &format!("B{}*C{}", row+1, row+1))?; }
// Automatische Spaltenbreite worksheet.set_column_width(0, 15)?; worksheet.set_column_width(1, 12)?; worksheet.set_column_width(2, 10)?; worksheet.set_column_width(3, 12)?;
workbook.save("report.xlsx")?; println!("Datei report.xlsx erstellt!"); Ok(())}Bibliothek calamine: Lesen von Excel-Dateien
calamine ist ein schneller Parser zum Lesen von Excel-Dateien (.xlsx, .xls, .xlsb). Er benötigt kein installiertes Excel und arbeitet vollständig im Arbeitsspeicher.
Installation
[dependencies]calamine = "0.24"Beispiel: Daten aus einer Datei lesen
Wir lesen die zuvor erstellte Datei und geben die Daten in der Konsole aus:
use calamine::{open_workbook, Reader, Xlsx};
fn main() -> Result<(), Box> { let path = "report.xlsx"; let mut workbook: Xlsx<_> = open_workbook(path)?;
if let Some(Ok(range)) = workbook.worksheet_range("Sheet1") { println!("Inhalt der Datei {}:", path); println!("{:-<40}", "");
for row in range.rows() { for cell in row { match cell { calamine::Data::Stri Auch in der Bibliothek
Kryptographie in C++: Vollständiger Leitfaden zu Verschlüsselung und Hashing
Rate limiting in Rust: Bibliotheken governor, leaky-bucket und Middleware für Webserver
validator — Datenvalidierung in Rust
Autorisierung und Authentifizierung in C# (.NET): Vollständiger Leitfaden