1. 程式人生 > >.NET匯出Excel的四種方法及評測

.NET匯出Excel的四種方法及評測

.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個的限制。因此,“試用版”對我們的物理限制,就只有這個水印了(當然加了這個水印客戶肯定也不會有好表情