MiniExcel.Rust
0.1.0-preview.1
Prefix Reserved
dotnet add package MiniExcel.Rust --version 0.1.0-preview.1
NuGet\Install-Package MiniExcel.Rust -Version 0.1.0-preview.1
<PackageReference Include="MiniExcel.Rust" Version="0.1.0-preview.1" />
<PackageVersion Include="MiniExcel.Rust" Version="0.1.0-preview.1" />
<PackageReference Include="MiniExcel.Rust" />
paket add MiniExcel.Rust --version 0.1.0-preview.1
#r "nuget: MiniExcel.Rust, 0.1.0-preview.1"
#:package MiniExcel.Rust@0.1.0-preview.1
#addin nuget:?package=MiniExcel.Rust&version=0.1.0-preview.1&prerelease
#tool nuget:?package=MiniExcel.Rust&version=0.1.0-preview.1&prerelease
<div align="center">
MiniExcel for Rust
简体中文 | 繁體中文 | Français | 日本語 | Español
Fast XLSX and CSV processing with bounded-memory streaming.
</div>
<div align="center">
Part of the MiniExcel project family, with the .NET library as its compatibility reference.
</div>
<div align="center">
Open the Browser Lab to inspect or generate XLSX files locally. Workbook data stays in the browser.
</div>
Introduction
MiniExcel for Rust is an XLSX and CSV reader/writer with bounded-memory streaming, Serde support, analytics, and RAG exports.
Install
cargo add miniexcel
Requires Rust 1.85.0 or later.
.NET Package
The repository also builds the prerelease MiniExcel.Rust NuGet package. It depends on MiniExcel
v1 1.46.0, reuses its configuration and mapping types, and routes calls
made through MiniExcelRust to the Rust native library.
dotnet add package MiniExcel.Rust --prerelease
using MiniExcelLibs;
using MiniExcelLibs.OpenXml;
var rows = MiniExcelRust.Query(
"book.xlsx",
useHeaderRow: true,
configuration: new OpenXmlConfiguration { IgnoreEmptyRows = true });
Use MiniExcel.Query for the original managed implementation and MiniExcelRust.Query for the
Rust-backed implementation. Build and consume a local package with
./scripts/dotnet/Test-Package.ps1 -Rid win-x64.
Quick Start
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])?;
Capabilities
- Bounded-memory dynamic, typed, structured, table, and CSV queries.
- Path, byte-array, and borrowed reader/writer APIs.
- Serde reading and writing; date/time helpers and exact-cell mapping.
- Multi-sheet creation, formatting options, and worksheet visibility.
- Atomic worksheet insert/replace, rename, reorder, copy, and visibility changes.
- Template rendering, conditional/group blocks, and marker-driven cell merging.
- Streaming grouped analytics with explicit limits.
- Source-addressed JSONL and Markdown exports for LLM/RAG workflows.
- Optional runtime-neutral async streams; ZIP/XML/filesystem work remains blocking.
Key Semantics
- Path queries stream worksheet XML and do not retain all rows.
- The default worksheet is the first worksheet, not the active tab.
- Formula reads return cached values; structured reads also expose formula text and formats. MiniExcel does not calculate formulas.
- Save creates a new workbook and refuses existing paths by default. Insert APIs modify
.xlsxfiles atomically after validation. - Large shared-string tables may spill to indexed temporary files; byte/WASM queries keep them in memory.
- Not supported:
.xls,.xlsb,.ods, macros, image authoring, formula calculation, or a general style system.
See the compatibility matrix, analytics and RAG contract, and Insert migration guide.
Rust And .NET Benchmark
Place this repository beside .NET MiniExcel, then run:
pwsh ./scripts/compare-dotnet-v1-rust.ps1 -DotNetRepository D:\git\MiniExcel
The report is written to target/benchmarks/dotnet-v1-vs-rust.json. Compare only results produced on the same machine; see the benchmark methodology.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- MiniExcel (= 1.46.0)
- System.Text.Json (>= 10.0.10)
-
net8.0
- MiniExcel (= 1.46.0)
- System.Text.Json (>= 10.0.10)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-preview.1 | 59 | 9/9/2026 |