2012-03-10 19 views
3

我在網上發現了許多Excel 2007/2010文件操作庫,其中一些獨立於MS Office的COM API。一些免費的,一些用於(很多)現金。大多數(如果不是全部的話)支持舊的二進制.xls(Excel 97-2003 BIFF8)格式以及非二進制Office Open XML .xlsx,但.xlsx的加載時間比.xlsb和.xls長4倍[1]只支持256列。是否存在用於在沒有(慢速)COM API(Interop)的情況下操作Excel .xlsb(BIFF12)文件的庫?


[1]另外.xlsx比.xlsb節省2倍的速度。

╭──────────────╥────────┬────────╮ 
│    ║ .xlsx │ .xlsb │ 
╞══════════════╬════════╪════════╡ 
│ loading time ║ 165s │ 43s │ 
├──────────────╫────────┼────────┤ 
│ saving time ║ 115s │ 61s │ 
├──────────────╫────────┼────────┤ 
│ file size ║ 91 MB │ 65 MB │ 
╰──────────────╨────────┴────────╯ 

測試已經在計算機上執行:我與10'000行×列1'000 = 10'000'000(10^7)簡單鏈=…+1式細胞中測試本上的工作表生成運行Windows 7,Core2Duo 2.3 GHz處理器,4 GB RAM和5400 rpm SATA II硬盤;計算機在其他進程中承受的負載很重。

+1

@kiamlaluno,你不覺得硬件對測試結果很重要嗎? – Arjan 2012-03-11 10:36:19

回答

0

Aspose.Cellsadded支持.xlsb,但可能not(還)完整的功能集。

我很確定(有幾個原因)他們不使用COM。

Aspose.Cells costs 1000 $ upwards。免費試用版是available


任何替代品?

0

的LibreOffice(3.5.0)和OpenOffice.org(3.2.0)的當前穩定版本可閱讀 .xlsb,,但不能寫入它。

(所以這並不能幫助我,但是)如果有人需要一個免費的模塊只是爲了閱讀.xlsb,並且對他們的手一段時間,他們可以嘗試在這些開源項目的倉庫裏的人。

也可以檢查其他FOSS Office套件項目是否已經實現了這樣的功能。如果你這樣做,請在這裏發佈結果。

1

如果你更喜歡使用java庫,我建議使用Aspose.Cell。但你必須支付999美元開始。

另一種選擇是使用libreoffice命令行實用程序,用於讀取xlsb文件,您必須先將其轉換爲csv。從終端:

libreoffice --headless --convert-to csv your_csv_file.csv --outdir /path/csv 

而對於使用UTF-8編碼轉換:

iconv -f ISO-8859-1 -t UTF-8 your_csv_file.csv > new_file_csv.csv 

,這是最好的解決辦法,我發現到目前爲止,如果你不能調用微軟Office原生功能,用於處理XLSB文件。

相關問題