C# 使用MiniExcel读写Excel
- 2026-11-01 04:51:14
C# 使用MiniExcel读写Excel
写Excel时注意点
MiniExcel是专为高性能读写与低内存占用设计的轻量级Excel库,不替代NPOI或EPPlus;支持.NET 6+及Framework 4.7.2+,需using MiniExcelLibs;才能调用Query/SaveAs,仅支持.xlsx/.csv,无样式/公式/密码保护功能。
MiniExcel 不是用来“替代 NPOI 或 EPPlus”的通用 Excel 工具,而是专为「高性能读写 + 低内存占用」场景设计的轻量级库。如果你正被大文件卡死、内存爆掉、或只是想用一行代码完成导入导出,那 MiniExcel 就是你要的答案——它不支持复杂样式、不处理图表、也不做条件格式,但读写百万行数据时,MiniExcel.Query 和 MiniExcel.SaveAs 真的够快、够稳、够省。
怎么安装和验证 MiniExcel 是否生效?
推荐命令(.NET CLI): dotnet add package MiniExcelNuget

验证是否成功:新建一个 var data = MiniExcel.Query("test.xlsx");,不报错即通过
正确写法:MiniExcel.SaveAs("sheet.xlsx", Sheet); 默认只写入 .xlsx,且路径必须包含扩展名,否则静默失败——这是最常被忽略的细节。传入的 dataList不能为空集合,否则生成的文件打开会提示“文件已损坏”(实际是合法但无内容的 xlsx,Excel 不认)目标目录需有写权限; 若路径是相对路径(如 "./exports/data.xlsx"),确保当前工作目录是你预期的位置(调试时可用Directory.GetCurrentDirectory()检查)不支持自定义 sheet 名 默认为 Sheet1;如需多 sheet得用 MiniExcel.SaveAs多次调用 + 不同路径,再手动合并(MiniExcel 本身不提供 workbook 级操作)Demo 
流式读取大文件时,Query().ToList() 是不是反模式?
是。虽然 Query() 本身是流式,但一旦接 .ToList() 或 .ToArray(),就等于把全部数据加载进内存——和用 NPOI 没本质区别。
真正流式处理姿势:用 foreach (var row in MiniExcel.Query("big.xlsx")) { /* 处理单行 */ },内存占用恒定在几 MB 内如果必须转成集合(比如要 LINQ 查询或分页),优先考虑 IEnumerable<t></t>延迟执行,而非急切求值百万行以上数据,别用 Query<t>().ToList()</t>直接绑定到 WinForm 的DataGridView.DataSource,会卡 UI;应先分页加载,或用虚拟模式(VirtualMode)
MiniExcel 的边界很清晰:它不做样式、不碰公式、不支持密码保护,也不处理 .xls(仅支持 .xlsx 和 .csv)。如果你的需求越过了这些线,别硬扛——该切 EPPlus 就切,该用数据库中转就中转。它的价值,从来不是“全能”,而是“在关键路径上,把一件事做到极致”。
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。