Travailler avec Excel en Rust : bibliothèques et exemples de code
Le langage Rust, connu pour ses performances et sa sécurité, est parfaitement adapté au traitement de données tabulaires. Si vous avez besoin de lire, créer ou modifier des fichiers Excel (formats .xlsx, .xls), l'écosystème Rust propose plusieurs bibliothèques matures. Dans cet article, nous examinerons trois principales : calamine (lecture), rust_xlsxwriter (écriture) et xlsx (cycle complet). Vous apprendrez comment les installer et verrez des exemples de code fonctionnels.
Bibliothèque calamine — lecture de fichiers Excel
calamine est une bibliothèque rapide et légère pour la lecture de fichiers Excel (xlsx, xls, xlsb, ods). Elle ne nécessite pas l'installation de dépendances externes et fonctionne « prête à l'emploi ». Elle prend en charge la lecture de cellules, de feuilles, de formules et de métadonnées.
Installation
[dependencies]calamine = "0.26"Exemple : lecture de données à partir d'un fichier
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")?;
// Obtenir la feuille par son nom if let Some(Ok(range)) = workbook.worksheet_range("Sheet1") { for row in range.rows() { for cell in row { // Chaque cellule est un DataType match cell { calamine::Data::String(s) => print!("{} ", s), calamine::Data::Float(f) => print!("{} ", f), calamine::Data::Int(i) => print!("{} ", i), _ => print!("? "), } } println!(); } }
Ok(())}Ce code ouvre le fichier data.xlsx, lit la feuille Sheet1 et affiche toutes les cellules ligne par ligne. calamine détecte automatiquement le type de données (chaîne, nombre, date, etc.).
Bibliothèque rust_xlsxwriter — création et écriture Excel
rust_xlsxwriter est une bibliothèque puissante pour la création de fichiers xlsx. Elle prend en charge le formatage, la fusion de cellules, les graphiques, le formatage conditionnel et bien plus encore. C'est l'équivalent direct de la bibliothèque Python xlsxwriter.
Installation
[dependencies]rust_xlsxwriter = "0.76"Exemple : création d'un rapport simple
use rust_xlsxwriter::{Workbook, Format, Color};
fn main() -> Result<(), Box<dyn std::error::Error>> { let mut workbook = Workbook::new();
// Créer un format pour les en-têtes let header_format = Format::new() .set_bold() .set_font_color(Color::White) .set_background_color(Color::Blue);
// Ajouter une feuille let sheet = workbook.add_worksheet();
// Écrire les en-têtes sheet.write_with_format(0, 0, "Nom", &header_format)?; sheet.write_with_format(0, 1, "Âge", &header_format)?; sheet.write_with_format(0, 2, "Ville", &header_format)?;
// Écrire les données sheet.write(1, 0, "Anna")?; sheet.write(1, 1, 28)?; sheet.write(1, 2, "Moscou")?;
sheet.write(2, 0, "Ivan")?; sheet.write(2, 1, 35)?; sheet.write(2, 2, "Saint-Pétersbourg")?;
// Enregistrer dans un fichier workbook.save("report.xlsx")?;
println!("Fichier report.xlsx créé avec succès !"); Ok(())}Dans cet exemple, nous créons un fichier avec des en-têtes formatés (texte en gras, police blanche sur fond bleu) et deux lignes de données. rust_xlsxwriter prend également en charge les graphiques, les images et les tableaux croisés dynamiques.
Bibliothèque xlsx — cycle complet (lecture + écriture)
xlsx est une bibliothèque polyvalente qui permet à la fois de lire et de créer des fichiers xlsx. Elle est moins populaire que