Introduction

Aspose.Cells FOSS pour Rust apporte la famille Aspose.Cells FOSS à l’écosystème Rust. Le crate aspose-cells-foss-rust permet aux applications Rust de créer des classeurs Excel XLSX à partir de zéro, de charger des fichiers existants, de modifier leur contenu et d’enregistrer le résultat — sans installation de Microsoft Office, automatisation COM, ou runtime externe.

Le crate est sous licence MIT et cible l’édition 2021 de Rust. Il suit les conventions attendues par les développeurs Rust : des constructeurs comme Workbook::new, une gestion des erreurs basée sur Result via CellsError, et des accesseurs mutables explicites tels que get_worksheets_mut et get_cells_mut qui maintiennent les règles d’emprunt claires. Si vous créez des services backend, des outils CLI ou des pipelines de données qui doivent produire ou consommer des feuilles de calcul, cette bibliothèque vous offre une façon native de le faire.

Cette section a été révisée par rapport au modèle source actuel pour le comportement produit le plus récent et la couverture API.

Aspose.Cells FOSS est déjà disponible pour .NET, C++, Java, Python et TypeScript ; le crate Rust rejoint la famille avec le même objectif : un support XLSX honnête et vérifiable sous une licence permissive.


Ce qui est inclus

Classeur, Feuilles de calcul et Valeurs de cellule typées

Un Workbook commence avec une feuille de calcul et se développe via add_worksheet. Les cellules acceptent des valeurs typées — chaînes, entiers, booléens, décimaux et dates-heures — grâce à des setters dédiés, ainsi aucune conversion de type chaîne n’est nécessaire :

let mut workbook = Workbook::new();
{
    let mut worksheets = workbook.get_worksheets_mut();
    let sheet = worksheets.get(0)?;
    let mut cells = sheet.get_cells_mut();

    cells.get("A1")?.put_value_string("Hello")?;
    cells.get("B1")?.put_value_i32(123)?;
    cells.get("C1")?.put_value_bool(true)?;
    cells.get("D1")?.put_value_decimal(12.5)?;
}
workbook.save("hello.xlsx")?;

Formules avec résultats mis en cache

Les formules sont enregistrées avec une valeur mise en cache, de sorte que le fichier enregistré s’ouvre dans Excel avec les résultats corrects immédiatement — aucun passage de recalcul n’est requis :

cells.get("F1")?.put_value_i32(10)?;
cells.get("G1")?
    .put_formula_with_cached_value("=F1*2", CellValue::Number(20.0))?;

Graphiques ancrés aux plages de données

Les types de graphiques colonne, ligne et autres du enum ChartType peuvent être ancrés à des plages de cellules sur une feuille de calcul, et la géométrie du graphique peut être relue à partir des fichiers chargés :

let mut charts = sheet.get_charts();
charts.add(
    ChartType::Column,
    "Charts!$B$1:$B$13".to_string(),
    0,
    4,
    18,
    8,
)?;

Style, mise en page et structure

Le formatage des cellules passe par CellStyle avec Font, Fill et Borders, appliqué sélectivement avec StyleFlag. PageSetup contrôle la taille du papier et l’orientation pour l’impression, FreezePane maintient les lignes d’en-tête visibles, et les tableaux structurés sont fournis via ListObject avec TableStyleType.

Validation, mise en forme conditionnelle et filtres

Les fonctionnalités de qualité des données font partie du cœur de la bibliothèque : règles de Validation avec OperatorType, mise en forme conditionnelle via FormatCondition, filtres automatiques avec AutoFilter, noms définis via DefinedName, et protection du classeur ou de la feuille de calcul via WorkbookProtection et WorksheetProtection.

Chargement défensif avec diagnostics

Les fichiers XLSX du monde réel ne sont pas toujours bien formés. LoadOptions expose des indicateurs de réparation, et LoadDiagnostics indique ce que le chargeur a rencontré :

let options = LoadOptions {
    try_repair_package: true,
    try_repair_xml: true,
    ..LoadOptions::default()
};

let loaded = Workbook::load_xlsx_with_options(&valid_path, &options)?;
println!(
    "Loaded workbook with {} worksheet(s) and {} diagnostic issue(s).",
    loaded.get_worksheets().count(),
    loaded.get_load_diagnostics().issues().len()
);

Démarrage rapide

Ajoutez la crate à votre Cargo.toml en tant que dépendance git (la crate n’est pas encore publiée sur crates.io) :

# Cargo.toml
[dependencies]
aspose-cells-foss-rust = { git = "https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Rust" }

Ensuite, créez, enregistrez et rechargez votre premier classeur :

use aspose_cells_foss_rust::{CellValue, Workbook};
use std::error::Error;

fn main() -> Result<(), Box<dyn Error>> {
    // Create a new workbook (starts with one sheet, "Sheet1").
    let mut workbook = Workbook::new();
    {
        let mut worksheets = workbook.get_worksheets_mut();
        let sheet = worksheets.get(0)?;
        let mut cells = sheet.get_cells_mut();

        cells.get("A1")?.put_value_string("Hello")?;
        cells.get("B1")?.put_value_i32(123)?;
        cells.get("G1")?
            .put_formula_with_cached_value("=F1*2", CellValue::Number(20.0))?;
    }
    workbook.save("hello.xlsx")?;

    // Load it back.
    let loaded = Workbook::load_xlsx("hello.xlsx")?;
    let sheet = loaded.worksheet("Sheet1")?;
    let cells = sheet.get_cells();
    println!("A1 = {}", cells.get("A1")?.display_string_value());

    Ok(())
}

Formats pris en charge

FormatExtensionLireÉcrire
XLSX.xlsx

XLSX est le point central de la version actuelle : lecture et écriture complètes en aller-retour via Workbook::load_xlsx et Workbook::save, avec les énumérations LoadFormat et SaveFormat qui régissent la sélection explicite du format.


Open Source & Licences

Aspose.Cells FOSS pour Rust est sous licence MIT. Le code source complet est disponible sur GitHub, et la licence autorise l’utilisation commerciale, la modification et la redistribution.


Premiers pas

Ressources associées