MiniExcel pour Rust

September 10, 2026 · View on GitHub

MiniExcel pour Rust

English | 简体中文 | 繁體中文 | 日本語 | Español

Crates.io Téléchargements Documentation CI GitHub Stars Licence

Traitement XLSX et CSV rapide, avec mémoire bornée.


Ce projet fait partie de l'écosystème MiniExcel et utilise la bibliothèque .NET comme référence de compatibilité.


Ouvrir Browser Lab pour inspecter ou générer des XLSX localement. Les données restent dans le navigateur.


Présentation

MiniExcel pour Rust est une bibliothèque de lecture/écriture XLSX et CSV avec flux à mémoire bornée, Serde, analyse et exports RAG.

Installation

cargo add miniexcel

Nécessite Rust 1.85.0 ou ultérieur.

Package .NET

Le dépôt construit également le package NuGet préliminaire MiniExcel.Rust. Il dépend exactement de MiniExcel v1 1.46.0, réutilise ses types de configuration et de mapping, et transmet les appels MiniExcelRust à la bibliothèque native Rust.

dotnet add package MiniExcel.Rust --version 0.1.0-preview.2
using MiniExcelLibs;
using MiniExcelLibs.OpenXml;

var rows = MiniExcelRust.Query(
    "book.xlsx",
    useHeaderRow: true,
    configuration: new OpenXmlConfiguration { IgnoreEmptyRows = true });

MiniExcel.Query utilise l'implémentation managée d'origine ; MiniExcelRust.Query utilise le backend Rust. Construisez et testez un package local avec ./scripts/dotnet/Test-Package.ps1 -Rid win-x64.

Démarrage Rapide

use miniexcel::MiniExcel;

for row in MiniExcel::query("book.xlsx")? {
    println!("{:?}", row?["A"]);
}
use miniexcel::{CellValue, DynamicRow, MiniExcel};

let mut row = DynamicRow::new();
row.insert("Name".into(), CellValue::String("MiniExcel".into()));
MiniExcel::save_as("book.xlsx", &[row])?;

Capacités

  • Requêtes dynamiques, typées, structurées, Table et CSV à mémoire bornée.
  • API par chemin, octets et reader/writer emprunté.
  • Lecture/écriture Serde, helpers date/heure et mapping de cells précis.
  • Création multi-feuilles, options de format et visibilité.
  • Ajout/remplacement, renommage, ordre, copie et visibilité atomiques des feuilles.
  • Templates, blocs conditionnels/groupés et fusion pilotée par marqueurs.
  • Analyses groupées en flux avec limites explicites.
  • Exports JSONL et Markdown adressés à la source pour LLM/RAG.
  • Streams async optionnels et indépendants du runtime ; ZIP/XML/filesystem restent bloquants.

Sémantique Clé

  • Les requêtes par chemin lisent le XML en flux sans conserver toutes les lignes.
  • La feuille par défaut est la première, pas l'onglet actif.
  • La lecture renvoie les valeurs de formule en cache ; la lecture structurée expose aussi texte et formats. MiniExcel ne calcule pas les formules.
  • Save crée un workbook et refuse les chemins existants par défaut ; Insert modifie les .xlsx atomiquement après validation.
  • Les grandes shared strings peuvent utiliser des fichiers temporaires indexés ; les requêtes bytes/WASM les gardent en mémoire.
  • Non pris en charge : .xls, .xlsb, .ods, macros, création d'images, calcul de formules ou système général de styles.

Voir la matrice de compatibilité, le contrat analyse/RAG et le guide de migration Insert.

Benchmark Rust Et .NET

Derniers Résultats NuGet

Le dernier test Windows x64 compare MiniExcel 1.46.0, le wrapper .NET MiniExcel.Rust 0.1.0-preview.2 et MiniExcel Rust 0.4.0 natif sur un workbook avec dimension déclarée de 100 000 lignes x 10 colonnes, avec cinq processus neufs par runtime et scénario. Toutes les valeurs sont vérifiées avant la mesure.

ScénarioRuntimeTemps médianLignes/sPremière ligneAllocation managéeWorking set maximal
ColdMiniExcel2 145,90 ms46 60038,77 ms1 167,07 MB51,26 MB
ColdMiniExcel.Rust (.NET)1 047,67 ms95 45012,05 ms107,04 MB44,59 MB
ColdMiniExcel.Rust855,09 ms116 9470,42 msn/a3,70 MB
SteadyMiniExcel4 341,55 ms69 1003,95 ms3 500,58 MB54,74 MB
SteadyMiniExcel.Rust (.NET)2 972,94 ms100 9105,50 ms321,09 MB48,08 MB
SteadyMiniExcel.Rust2 143,31 ms139 9700,41 msn/a3,79 MB

Pour une Query complète, preview.2 est 2,05 fois plus rapide en Cold et 1,46 fois plus rapide en Steady que MiniExcel v1, avec 90,8 % d'allocation managée en moins dans les deux scénarios.

Les résultats dépendent de la machine. Relancez pwsh ./scripts/compare-nuget-v1-rust.ps1 sur des workbooks représentatifs ; voir la méthodologie.

Placez ce dépôt à côté de .NET MiniExcel, puis exécutez :

pwsh ./scripts/compare-dotnet-v1-rust.ps1 -DotNetRepository D:\git\MiniExcel

Le rapport est écrit dans target/benchmarks/dotnet-v1-vs-rust.json. Comparez uniquement des résultats de la même machine ; voir la méthodologie.