4

我在网上发现了许多 Excel 2007/2010 文件操作库,其中一些独立于 MS Office 的 COM API。有些是免费的,有些是(大量)现金。大多数(如果不是全部)都支持旧的二进制 .xls (Excel 97-2003 BIFF8) 格式以及非二进制 Office Open XML .xlsx,但 .xlsx 的加载时间是 .xlsb 的 4 倍[1],并且 .xls 仅支持256 列。


[1] .xlsx 的保存速度也比 .xlsb 慢 2 倍。我在生成的工作表上对此进行了测试,该工作表具有 10'000 行 * 1'000 列 = 10'000'000 (10^7) 个简单链式=…+1公式的单元格:

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

该测试在运行 Windows 7 的计算机上执行,该计算机具有 Core2Duo 2.3 GHz 处理器、4 GB RAM 和 5400 rpm SATA II 硬盘;计算机承受着来自其他进程的一些沉重负载。

4

3 回答 3

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

如果您不能调用 microsoft office 本地功能来处理 XLSB 文件,那么这是我迄今为止找到的最佳解决方案。

于 2014-06-25T05:18:25.873 回答
0

Aspose.Cells添加了对的支持.xlsb,但可能还没有(还)完整的功能集。

我很确定(出于多种原因)他们不使用 COM。

Aspose.Cells 的成本高达 1000 美元以上。提供免费试用。


有什么选择吗?

于 2012-03-11T21:46:58.967 回答
0

LibreOffice (3.5.0) 和 OpenOffice.org (3.2.0) 当前的稳定版本可以读取.xlsb,但不能写入

(所以这对我没有帮助,但是)如果有人需要一个免费模块来阅读 .xlsb 并且有一些时间,他们可以尝试这些开源项目的存储库中的模块。

还可以检查其他 FOSS Office 套件项目是否实施了类似的东西。如果你这样做,请在此处发布结果。

于 2012-03-12T13:47:40.907 回答