Die calamine-Bibliothek für Rust: Excel-Dateien lesen
1. Was ist calamine und wofür wird es verwendet?
calamine ist eine leistungsstarke Bibliothek zum Lesen von Excel-Dateien (Formate .xlsx, .xls, .xlsb, .ods) in Rust. Sie ist vollständig in Rust geschrieben und benötigt keine externen Abhängigkeiten. Das macht sie zur idealen Wahl für Projekte, bei denen Geschwindigkeit, Speichersicherheit und plattformübergreifende Kompatibilität wichtig sind. Im Gegensatz zu vielen anderen Bibliotheken erfordert calamine weder Microsoft Office noch eine Java Runtime Environment.
Der Hauptzweck von calamine ist das Extrahieren von Daten aus Tabellenkalkulationen. Die Bibliothek unterstützt das Lesen von Zellen, Zeilen, Spalten, Arbeitsblättern sowie die Verarbeitung von Formeln, Daten, Zahlen und Zeichenfolgen. Besonders nützlich ist calamine für die Automatisierung von Berichtsverarbeitung, den Import von Excel-Daten in Datenbanken, die Analyse großer Tabellen und die Erstellung von ETL-Datenpipelines.
calamine wurde mit Fokus auf Leistung entwickelt: Sie verwendet Streaming und Lazy Loading, um Dateien mit Hunderten von Megabyte ohne hohen Arbeitsspeicherverbrauch zu verarbeiten. Die Bibliothek wird von der Rust-Community aktiv gepflegt und kommt in bekannten Projekten wie rust-xlsxwriter und tauri zum Einsatz.
2. Installation
Um calamine zu Ihrem Rust-Projekt hinzuzufügen, führen Sie folgenden Befehl im Terminal aus:
cargo add calamine
Oder fügen Sie die Abhängigkeit manuell in Ihre Cargo.toml-Datei ein:
[dependencies]
calamine = "0.24"
Führen Sie anschließend cargo build aus, um die Bibliothek herunterzuladen und zu kompilieren. Stellen Sie sicher, dass Rust installiert ist (empfohlen wird Version 1.65 oder höher).
3. Schnellstart
Ein minimales Beispiel zum Lesen von Daten aus einer Excel-Datei:
use calamine::{open_workbook, Reader, Xlsx};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Datei öffnen
let mut workbook: Xlsx<_> = open_workbook("daten.xlsx")?;
// Erstes Arbeitsblatt abrufen
let sheet_name = workbook.sheet_names()[0].clone();
let range = workbook.worksheet_range(&sheet_name)?;
// Inhalt ausgeben
for row in range.rows() {
for cell in row {
print!("{:?}\t", cell);
}
println!();
}
Ok(())
}
Dieser Code öffnet die Datei daten.xlsx, liest das erste Arbeitsblatt und gibt alle Zellen in der Konsole aus. Beachten Sie die Verwendung von open_workbook – einer universellen Funktion zum Öffnen von Dateien in jedem unterstützten Format.
4. Wichtige Methoden und Funktionen
4.1. open_workbook
Signatur: pub fn open_workbook<P: AsRef<Path>, T: Reader<BufReader<File>>>(path: P) -> Result<T, CalamineError>
Funktion: Öffnet eine Excel-Datei unter dem angegebenen Pfad und gibt eine Arbeitsmappe (workbook) des angegebenen Typs zurück. Der Rückgabetyp hängt vom Dateiformat ab: Xlsx, Xls, Xlsb oder Ods.
use calamine::{open_workbook, Xlsx};
fn main() {
let mut workbook: Xlsx<_> = open_workbook("bericht.xlsx").expect("Datei kann nicht geöffnet werden");
println!("Datei erfolgreich geöffnet");
}
4.2. sheet_names
Signatur: fn sheet_names(&a