1. 程式人生 > >.NET操作Excel免費開源類庫簡介及比較

.NET操作Excel免費開源類庫簡介及比較


自從上次找到NPOI之後,根據園友提供的線索以及Google,又找到了一些開源免費的類庫,所以都簡單體驗了一遍。

主要找到以下類庫:

從1-6的類庫均不需要安裝Office,不使用Office COM元件;而NetOffice需要安裝Office,它提供的是與Office COM元件差不多的功能。

MyXls

MyXls支援Office Excel 97-2003格式(Biff8格式),但目前並不支援formula即公式;網上流傳的支援2007是錯誤的說法

使用它還需要注意的是,它與Office PIA一樣,索引號是從1開始的。

另外不得不說的是,它的建構函式、Save方法、屬性中的FileName讓人看的眼花瞭亂,無所適從吶-_-。


Koogra

Koogra支援Office 97-2003(Biff8)以及Office 2007以上(Xlsx)格式,但它僅提供讀取功能,沒有相關的建立Excel功能;另需要注意它的索引號又是從0開始的。

我在幾臺機器上測試不太穩定,即有的機器直接不能執行,沒有深究什麼問題。


ExcelLibrary

聽說這是國人開發的,目前支援97-2003(biff8)格式,未來可能會支援xlsx格式。它使用二維陣列的方式來操作,這種方式比較接近Office PIA,另外,它的索引號是從0開始的。

在測試時,創建出的Excel有時內容是空的,可能存在bug。

它提供了一個DataSetHelper的工具類,用於從DataTable/DataSet和WorkBook之間的轉換,但這個工具類不支援對流的操作。

ExcelPackage與EPPlus

ExcelPackage它主要支援OOXML即Office Open XML標準,Office 2007以上XLSX格式的讀寫;但它不支援對流的操作,僅支援對實體檔案的操作。

EPPlus全稱應該是ExcelPackage Plus,即ExcelPackage的增強版,它在ExcelPackage的基礎上,增強了許多功能包括對流、Linq的支援,可以說相當不錯。

它的索引號是從1開始的。

LinqToExcel,NetOffice…

至於LinqToExcel,只能說是顆糖而已,不支援對流的操作,實在是無愛啊,不多說。

NetOffice提供與Office PIA相似的功能,又需要安裝Office,實在不適合在web場景中使用,所以也不多說。

結尾

對於Excel 97-2003格式,還是用NPOI最好,API設計比較好(上面這些類庫又是0又是1的索引號和二維陣列實在讓人好暈);而對於2007(xlsx)以上版本,可以使用EPPlus;這樣基本所有的Excel格式通吃了。

當然這只是免費的方案,對於不缺大洋的,用Apose.Cell等強大的商業解決方案又是另一回事了。