致力于挖掘功能强大、性能优越、创新前沿且简单易用的 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