Bibliothèque calamine pour Rust : lire des fichiers Excel
1. Qu'est-ce que calamine et pourquoi l'utiliser ?
calamine est une bibliothèque haute performance pour la lecture de fichiers Excel (formats .xlsx, .xls, .xlsb, .ods) en Rust. Écrite en Rust pur sans dépendances externes, elle constitue un choix idéal pour les projets où la vitesse, la sécurité mémoire et la compatibilité multiplateforme sont essentielles. Contrairement à de nombreuses autres bibliothèques, calamine ne nécessite ni Microsoft Office ni Java Runtime Environment.
L'objectif principal de calamine est d'extraire des données de feuilles de calcul. Elle prend en charge la lecture de cellules, lignes, colonnes, feuilles, ainsi que la gestion des formules, dates, nombres et chaînes de caractères. Cette bibliothèque est particulièrement utile pour automatiser le traitement de rapports, importer des données Excel dans des bases de données, analyser de grands tableaux et créer des pipelines de traitement de données (ETL).
calamine est conçue pour la performance : elle utilise la lecture en continu et le chargement paresseux des données, ce qui permet de traiter des fichiers de plusieurs centaines de mégaoctets sans consommation mémoire excessive. Activement maintenue par la communauté Rust, elle est utilisée dans des projets reconnus comme rust-xlsxwriter et tauri.
2. Installation
Pour ajouter calamine à votre projet Rust, exécutez la commande suivante dans le terminal :
cargo add calamine
Ou ajoutez manuellement la dépendance dans le fichier Cargo.toml :
[dependencies]
calamine = "0.24"
Ensuite, exécutez cargo build pour télécharger et compiler la bibliothèque. Assurez-vous d'avoir Rust installé (version 1.65 ou ultérieure recommandée).
3. Démarrage rapide
Un exemple minimal de lecture de données depuis un fichier Excel :
use calamine::{open_workbook, Reader, Xlsx};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Ouvrir le fichier
let mut workbook: Xlsx<_> = open_workbook("data.xlsx")?;
// Récupérer la première feuille
let sheet_name = workbook.sheet_names()[0].clone();
let range = workbook.worksheet_range(&sheet_name)?;
// Afficher le contenu
for row in range.rows() {
for cell in row {
print!("{:?}\t", cell);
}
println!();
}
Ok(())
}
Ce code ouvre le fichier data.xlsx, lit la première feuille et affiche toutes les cellules dans la console. Notez l'utilisation de open_workbook — une fonction universelle pour ouvrir des fichiers de tout format pris en charge.
4. Méthodes et fonctions principales
4.1. open_workbook
Signature : pub fn open_workbook<P: AsRef<Path>, T: Reader<BufReader<File>>>(path: P) -> Result<T, CalamineError>
Fonction : Ouvre un fichier Excel au chemin spécifié et retourne un classeur (workbook) du type correspondant. Le type de retour dépend du format du fichier : Xlsx, Xls, Xlsb ou Ods.
use calamine::{open_workbook, Xlsx};
fn main() {
let mut workbook: Xlsx<_> = open_workbook("report.xlsx").expect("Impossible d'ouvrir le fichier");
println!("Fichier ouvert avec succès");
}
4.2. sheet_names
Signature : fn sheet_names(&a
Aussi dans la bibliothèque
node-cron : Planificateur de tâches JavaScript
Internationalisation (i18n) en Go (Golang) : Guide complet
Travailler avec CSV en PHP : lecture, écriture et traitement des données
Client Elasticsearch pour Node.js : @elastic/elasticsearch
JsonWebToken JavaScript (Node.js) : guide complet avec exemples