Arbeiten mit Excel in Rust: Bibliotheken zum Lesen und Schreiben

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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!();

Empfehlungen