你不能
如POI组件页面上所述,HSSF用于处理.xls文件(基于OLE2),而XSSF
/ SXSSF用于处理.xlsx文件(.xlsx)
如果要生成.xls文件,则必须使用HSSF
UserModel。HSSF不支持流写入,仅支持流读取。
.xls文件格式不像.xlsx那样适合流式写入(更多的后向/向前引用,偏移量等),因此HSSF中不提供流式写入支持。只需增加您的Java堆大小,或针对.xlsx切换到SXSSF,或仅使用CSV之类的简单方法即可!
。
更新
如果需要测试要为使用HSSF甚至XSSF进行写入而应为系统提供的内存,建议您尝试使用SSPerformanceTest示例,该示例可以在命令行上运行。用所有罐子和给定的堆大小将其启动,然后查看是否完成。它接受行和列数以及要创建的文件类型的参数。使用每晚构建并尝试40k行/
10列,我可以在90mb的堆中快速完成它:
$ java -Xmx90m -classpath poi-3.10-beta3-20131219.jar:poi-examples-3.10-beta3-20131219.jar:poi-ooxml-3.10-beta3-20131219.jar org.apache.poi.ss.examples.SSPerformanceTest HSSF 40000 10 1Elapsed 1 seconds



