.NET导出Excel的四种方法及评测

时间:2024-03-05 13:51:27

.NET导出Excel的四种方法及评测

导出Excel.NET的常见需求,开源社区、市场上,都提供了不少各式各样的Excel操作相关包。本文,我将使用NPOIEPPlusOpenXMLAspose.Cells四个市面上常见的库,各完成一个导出Excel示例。然后对其代码风格和性能做一个横向比较。最后我将说出我自己的感想。

文中所有的示例代码可以在这里下载:
https://github.com/sdcb/blog-data/tree/master/2019/20190824-dotnet-excel-compare

NPOI

NPOI源自于Java写的Apache POI,目前最新版本是2.4.1NPOI是开源项目,作者是华人,项目地址是:https://github.com/tonyqus/npoi

几年前大家导出Excel都使用COM,但COM不方便,这个组件的推出无疑弥补了.NETExcel方面组件的空白,大家都说比COM好用。

NPOI还加入了.NET Core Community组织

EPPlus

EPPlus是另一个开源的Excel操作库,目前最新版本是4.5.3.2Github地址如下:https://github.com/JanKallman/EPPlus

EPPlus仅依赖基础类库(BCL),完全没有第三方包依赖,也是.NET原生库。

EPPlus只支持导出Office 2007之后的格式,也就是xlsx。这已经是存在12年的格式了,但如果有客户想要导出xlsEPPlus将不支持。

OpenXML

OpenXMLNuGet包全称是DocumentFormat.OpenXml:是微软推出的较为低层的Excel操作库,最新稳定版本是2.9.1OpenXML也是开源项目,地址是:https://github.com/OfficeDev/Open-XML-SDK。

从该项目的名字可以看出,OpenXML比较涉及底层,因此很容易令人浮想联翩,感觉它的性能、速度很可能是最快的,但真的如此吗

Aspose.Cells

这是Aspose Pty Ltd公司推出的Excel操作库。它是众多Aspose File Format API产品其中之一。目前最新版本是19.8.0(基于年/月)。Aspose提供了应有尽有的文件格式支持,除了.NET外,Aspose还提供了C++Java的包。

据我所知Aspose的客户支持服务也不错,客户提出的问题经常可以在下一次发布时解决。

Aspose.Cells是不开源,付费的库,但提供无限期的试用,据官方网站显示,试用版将:

  • 限制打开文件数量100个
  • 限制使用Aspose.Cells.GridWeb功能
  • 生成的Excel将添加如下水印:

但经过我的试用,无论是并行还是串行,都没找到限制打开文件数量100个的限制。因此,“试用版”对我们的物理限制,就只有这个水印了(当然加了这个水印客户肯定也不会有好表情