我在网上发现了许多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硬盘的计算机上执行;计算机承受了其他进程的沉重负担。

最佳答案

如果您更喜欢使用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文件,那是迄今为止我找到的最佳解决方案。

09-16 00:31