自從上次找到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等強大的商業解決方案又是另一回事了。