MiniExcel para Rust

September 10, 2026 · View on GitHub

MiniExcel para Rust

English | 简体中文 | 繁體中文 | Français | 日本語

Crates.io Descargas Documentación CI GitHub Stars Licencia

Procesamiento XLSX y CSV rápido, con memoria acotada.


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.


Introducción

MiniExcel para Rust es una biblioteca de lectura/escritura XLSX y CSV con streaming de memoria acotada, Serde, análisis y exportaciones RAG.

Instalación

cargo add miniexcel

Requiere Rust 1.85.0 o posterior.

Paquete .NET

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.2
using 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.

Inicio Rápido

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])?;

Capacidades

  • 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.

Semántica Clave

  • 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 .xlsx ató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.

Benchmark De Rust Y .NET

Últimos Resultados NuGet

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.

EscenarioRuntimeMedianaFilas/sPrimera filaAsignación administradaPeak working set
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

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\MiniExcel

El informe se escribe en target/benchmarks/dotnet-v1-vs-rust.json. Compara solo resultados de la misma máquina; consulta la metodología.