一个简单、高效、低内存的.NET处理Excel查、写、填充数据工具库

1898d0b47a37aaba2a05dc93967cf6bd.png

我们致力于探索、分享和推荐最新的实用技术栈、开源项目、框架和实用工具。每天都有新鲜的开源资讯等待你的发现!

项目介绍

在日常工作中处理Excel查、写、填充数据的功能需求有很多,今天分享一个简单、高效、低内存的.NET处理Excel查、写、填充数据工具库:MiniExcel。

目前主流框架大多需要将数据全载入到内存方便操作,但这会导致内存消耗问题,MiniExcel 尝试以 Stream 角度写底层算法逻辑,能让原本1000多MB占用降低到几MB,避免内存不够情况。

fc6113ff9741368185ed210b6ace03c1.png

项目特点

  • 低内存耗用,避免OOM、频繁 Full GC 情况。

  • 支持即时操作每行数据。

  • 兼具搭配 LINQ 延迟查询特性,能办到低消耗、快速分页等复杂查询。

  • 轻量,不需要安装 Microsoft Office、COM+,DLL小于150KB。

  • 简便操作的 API 风格。

处理Excel性能对比

导入、查询 Excel 比较:

bdfbe011aa0bc5cb2c027e1a0a69d9ac.png

导出、创建 Excel 比较:

8ae122c4169926b9569fd5189b2a187b.png

安装MiniExcel

dotnet add package MiniExcel --version 1.33.0

1bf57929697b8844602f0332cb89698a.png

读/导入 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);
022ae4351a4607461df5774c3cff4d04.png

写/导出 Excel

支持集合<匿名类别>或是<强型别>

var path = Path.Combine(Path.GetTempPath(), $"{Guid.NewGuid()}.xlsx");
MiniExcel.SaveAs(path, new[] {
    new { Column1 = "MiniExcel", Column2 = 1 },
    new { Column1 = "Github", Column2 = 2}
});

IEnumerable<IDictionary<string, object>>

var values = new List<Dictionary<string, object>>()
{
    new Dictionary<string,object>{{ "Column1", "MiniExcel" }, { "Column2", 1 } },
    new Dictionary<string,object>{{ "Column1", "Github" }, { "Column2", 2 } }
};
MiniExcel.SaveAs(path, values);

Query 读 Excel 返回 DataTable

var table = MiniExcel.QueryAsDataTable(path, useHeaderRow: true);
17a0063ffa2113445c8860059f6ae0ba.png

开源地址

https://gitee.com/dotnetchina/MiniExcel

7dbf92ac5a1566e591551368d418a521.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值