【开源力荐】一个简单高效、低内存的 .NET 处理 Excel 文件的实用类库

【开源力荐】一个简单高效、低内存的 .NET 处理 Excel 文件的实用类库

编码文章call10242025-06-09 20:35:253A+A-

致力于挖掘功能强大、性能优越、创新前沿且简单易用的 C#/.NET 开源框架、项目、类库与工具。助力 .NET 开发者轻松解锁并运用这些实用的宝藏资源,提升开发效率与创新能力!

项目介绍

MiniExcel 是一个简单高效的 .NET 处理 Excel 查、写、填充数据的实用工具类库,旨在避免内存溢出(OOM)问题。目前主流框架大多需要将数据全载入到内存方便操作,但这会导致内存消耗问题,MiniExcel 尝试以 Stream 角度写底层算法逻辑,能让原本1000多MB占用降低到几MB,避免内存不够情况。

适用场景

MiniExcel 适用于需要高效处理大量 Excel 数据的各种场景,包括但不限于:

  • 大数据导入导出。
  • Excel 报表生成。
  • 数据分析与处理。
  • Web 应用中的 Excel 文件上传下载。

功能特点

  • 低内存消耗:避免内存溢出(OOM)和频繁的垃圾回收(GC)。
  • 实时行操作:支持对每一行数据进行实时操作。
  • LINQ 延迟执行:支持低消耗、快速分页和其他复杂查询。
  • 轻量级:无需安装 Microsoft Office,无 COM+ 依赖,DLL 大小小于 150KB。
  • 易用 API:提供简洁易用的 API 风格,方便读写和填充 Excel 文件。

主流类库性能对比

读/导入 Excel

Query 查询 Excel 返回强型别 IEnumerable 数据

public class UserAccount
{
public Guid ID { get; set; }
public string Name { get; set; }
public DateTime BoD { get; set; }
public int Age { get; set; }
public bool VIP { get; set; }
public decimal Points { get; set; }
}

var rows = MiniExcel.Query<UserAccount>(path);

// or

using (var stream = File.OpenRead(path))
var rows = stream.Query<UserAccount>();

查询所有 Sheet 名称跟数据

var sheetNames = MiniExcel.GetSheetNames(path);
foreach (var sheetName in sheetNames)
{
var rows = MiniExcel.Query(path, sheetName: sheetName);
}

指定单元格开始读取数据

MiniExcel.Query(path,useHeaderRow:true,startCell:"B3")

合并的单元格填充

 var config = new OpenXmlConfiguration()
{
FillMergedCells = true
};
var rows = MiniExcel.Query(path, configuration: config);

开源地址

https://github.com/mini-software/MiniExcel

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4