.NET匯出Excel的四種方法及評測
.NET匯出Excel的四種方法及評測
匯出Excel
是.NET
的常見需求,開源社群、市場上,都提供了不少各式各樣的Excel
操作相關包。本文,我將使用NPOI
、EPPlus
、OpenXML
、Aspose.Cells
四個市面上常見的庫,各完成一個匯出Excel
示例。然後對其程式碼風格和效能做一個橫向比較。最後我將說出我自己的感想。
文中所有的示例程式碼可以在這裡下載:
https://github.com/sdcb/blog-data/tree/master/2019/20190824-dotnet-excel-compare
NPOI
NPOI
源自於Java
寫的Apache POI,目前最新版本是2.4.1
。NPOI
幾年前大家匯出Excel
都使用COM
,但COM
不方便,這個元件的推出無疑彌補了.NET
在Excel
方面元件的空白,大家都說比COM
好用。
NPOI
還加入了.NET Core Community組織。
EPPlus
EPPlus
是另一個開源的Excel
操作庫,目前最新版本是4.5.3.2
。Github
地址如下:https://github.com/JanKallman/EPPlus。
EPPlus
僅依賴基礎類庫(BCL
),完全沒有第三方包依賴,也是.NET
原生庫。
EPPlus
只支援匯出Office 2007
之後的格式,也就是xlsx
xls
,EPPlus
將不支援。
OpenXML
OpenXML
的NuGet
包全稱是DocumentFormat.OpenXml
:是微軟推出的較為低層的Excel
操作庫,最新穩定版本是2.9.1
。OpenXML
也是開源專案,地址是: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個的限制。因此,“試用版”對我們的物理限制,就只有這個水印了(當然加了這個水印客戶肯定也不會有好表情