写点什么

EPPlus - 用于 .NET 的 Excel 电子表格

作者:辣么大
  • 2022 年 8 月 24 日
    广东
  • 本文字数:1386 字

    阅读完需:约 5 分钟

EPPlus - 用于 .NET 的 Excel 电子表格

我们都会遇到需要用程序操作 Excel 电子表格的情形。在这里推荐一个.NET 非常好用的包,官方网站是:https://epplussoftware.com/zh 官方网站宣传的是:


EPPlus

EPPlus 是一个.NET Framework/.NET Core 库,用于管理Office OpenXML电子表格,通过Nuget分发。版本 5 支持 3.5 版中的 .NET Framework 和 2.0 版中的 .NET Core。EPPlus 与任何其他库(如 Microsoft Excel)没有依赖关系。库的设计考虑到了开发人员。我们的目标一直是,具有 Excel 或任何其他电子表格库知识的开发人员应轻松启动以加快 API 的速度。或者-正如有人说的-说,你告诉胜利的方式!


它支持的功能如何呢:


  • 创建,读取,修改 Office Open XML 工作簿

  • 支持.NET Framework 和.NET Core。两个框架的支持是特性是一样的。

  • 提供的 api 接口很好用

  • 不依赖于 Micorsoft Excel

  • 是全球下载次数最多的操作 excel 的类库,数以千计的单元测试保证了质量

  • EPPlus 的源码在 github 中是开源的,Polyform 非商业许可下发布。https://github.com/EPPlusSoftware/EPPlus


它的效率如何呢?


EPPlus 5.3.2 创建以下工作簿并将其写入磁盘大约需要 47 秒(i7 CPU 1.8 Ghz,16 GB RAM,SSD,Win10,.NET Core 3.1)。它从磁盘加载相同的工作簿到 ExcelPackage 实例大约需要 32 秒。

  • 200 列

  • 100,000 行

  • 写在单元格中的数据 50%是整数,50%是长度为 36 个字符的字符串

  • 工作簿大小:65Mb


它最多支持 Sheet 页 1048576 行、16384 列


示例代码:


var file = new FileInfo(@"D:\gdhu\personalgit\dotnetdev\excel\ExcelDemo\test.xlsx");
var people = GetSetupData();
await SaveExcelFile(people, file);
static List<PersonModel> GetSetupData(){ List<PersonModel> output = new() { new() { Id = 1, FirstName = "Tim", LastName = "Corey" }, new() { Id = 2, FirstName = "Sue", LastName = "Storm" }, new() { Id = 3, FirstName = "Jane", LastName = "Smith" }, }; return output;}
static async Task SaveExcelFile(List<PersonModel> people, FileInfo file){ DeleteIfExists(file);
//using (var package = new ExcelPackage()) //{
//}// dispose
// 在方法的结尾会调用 dispose using var package = new ExcelPackage(file);
// work sheet var ws = package.Workbook.Worksheets.Add("MainReport");
//var range = ws.Cells["A1"].LoadFromCollection(people, true);
var range = ws.Cells["A2"].LoadFromCollection(people, true);
// width height range.AutoFitColumns();

ws.Cells["A1"].Value = "Our cool Report"; ws.Cells["A1:C1"].Merge = true;
ws.Column(1).Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;
ws.Row(1).Style.Font.Size = 24; ws.Row(1).Style.Font.Color.SetColor(Color.Blue);
ws.Column(2).Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; ws.Column(2).Style.Font.Bold = true;
ws.Column(3).Width = 30;
// work sheet var wsDetail = package.Workbook.Worksheets.Add("Detail");
range = wsDetail.Cells["A2"].LoadFromCollection(people, true);
await package.SaveAsync();
}
复制代码


生成 Excel 的结果:



用户头像

辣么大

关注

https://github.com/gdhucoder 2019.01.31 加入

公子,你再不吃这药丸💊,你就要完呐!

评论

发布
暂无评论
EPPlus - 用于 .NET 的 Excel 电子表格_Excel_辣么大_InfoQ写作社区