Este proyecto forma parte de la familia MiniExcel y usa la biblioteca .NET como referencia de compatibilidad.
Abrir Browser Lab para inspeccionar o generar XLSX localmente. Los datos permanecen en el navegador.
MiniExcel para Rust es una biblioteca de lectura/escritura XLSX y CSV con streaming de memoria acotada, Serde, análisis y exportaciones RAG.
cargo add miniexcelRequiere Rust 1.85.0 o posterior.
El repositorio también genera el paquete NuGet preliminar MiniExcel.Rust. Depende exactamente de MiniExcel
v1 1.46.0, reutiliza sus tipos de configuración y mapping, y
ejecuta mediante la biblioteca nativa de Rust las llamadas realizadas a MiniExcelRust.
dotnet add package MiniExcel.Rust --version 0.1.0-preview.2using MiniExcelLibs;
using MiniExcelLibs.OpenXml;
var rows = MiniExcelRust.Query(
"book.xlsx",
useHeaderRow: true,
configuration: new OpenXmlConfiguration { IgnoreEmptyRows = true });MiniExcel.Query usa la implementación administrada original y MiniExcelRust.Query usa el
backend de Rust. Genera y prueba un paquete local con
./scripts/dotnet/Test-Package.ps1 -Rid win-x64.
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])?;- Consultas dinámicas, tipadas, estructuradas, Table y CSV con memoria acotada.
- API por path, bytes y reader/writer prestado.
- Lectura/escritura Serde, helpers de fecha/hora y mapping exacto de cells.
- Creación multi-worksheet, opciones de formato y visibilidad.
- Insert/replace, rename, reorder, copy y visibilidad atómicos de worksheets.
- Templates, bloques condicionales/agrupados y combinación mediante markers.
- Análisis agrupados en streaming con límites explícitos.
- Exportaciones JSONL y Markdown con direcciones de origen para LLM/RAG.
- Streams async opcionales e independientes del runtime; ZIP/XML/filesystem siguen siendo bloqueantes.
- Las consultas por path transmiten el XML sin conservar todas las filas.
- La worksheet predeterminada es la primera, no la pestaña activa.
- La lectura devuelve valores de fórmula en caché; la lectura estructurada también expone texto y formatos. MiniExcel no calcula fórmulas.
- Save crea un workbook y rechaza paths existentes por defecto; Insert modifica
.xlsxatómicamente después de validarlo. - Las shared strings grandes pueden usar archivos temporales indexados; las consultas bytes/WASM las mantienen en memoria.
- No compatible:
.xls,.xlsb,.ods, macros, creación de imágenes, cálculo de fórmulas o sistema general de estilos.
Consulta la matriz de compatibilidad, el contrato de análisis/RAG y la guía de migración Insert.
La última prueba Windows x64 comparó MiniExcel 1.46.0, el wrapper .NET
MiniExcel.Rust 0.1.0-preview.2 y MiniExcel Rust 0.4.0 nativo sobre un workbook con dimension
declarada de 100.000 filas x 10 columnas,
con cinco procesos nuevos por runtime y escenario. Todos los valores se verificaron antes de medir.
| Escenario | Runtime | Mediana | Filas/s | Primera fila | Asignación administrada | Peak working set |
|---|---|---|---|---|---|---|
| Cold | MiniExcel | 2.145,90 ms | 46.600 | 38,77 ms | 1.167,07 MB | 51,26 MB |
| Cold | MiniExcel.Rust (.NET) | 1.047,67 ms | 95.450 | 12,05 ms | 107,04 MB | 44,59 MB |
| Cold | MiniExcel.Rust | 855,09 ms | 116.947 | 0,42 ms | n/a | 3,70 MB |
| Steady | MiniExcel | 4.341,55 ms | 69.100 | 3,95 ms | 3.500,58 MB | 54,74 MB |
| Steady | MiniExcel.Rust (.NET) | 2.972,94 ms | 100.910 | 5,50 ms | 321,09 MB | 48,08 MB |
| Steady | MiniExcel.Rust | 2.143,31 ms | 139.970 | 0,41 ms | n/a | 3,79 MB |
Para una Query completa, preview.2 es 2,05 veces más rápido en Cold y 1,46 veces más rápido en Steady que MiniExcel v1, con un 90,8 % menos de asignación administrada en ambos escenarios.
Los resultados dependen de la máquina. Ejecuta pwsh ./scripts/compare-nuget-v1-rust.ps1
con workbooks representativos; consulta la metodología.
Coloca este repositorio junto a .NET MiniExcel y ejecuta:
pwsh ./scripts/compare-dotnet-v1-rust.ps1 -DotNetRepository D:\git\MiniExcelEl informe se escribe en target/benchmarks/dotnet-v1-vs-rust.json. Compara solo resultados de la misma máquina; consulta la metodología.