我在网上发现了许多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文件,那是迄今为止我找到的最佳解决方案。