我正在使用Apache POI创建一些记录的Excel表格。一个这样的记录有16k行。我正在使用for
循环将记录写入Excel工作表,并且在每次迭代中我使用autoSizeColumn()
来自动调整列的大小。这样我就无法下载/写入excel文件,因为它需要永远完成写入过程。当我浏览SO时,我遇到了一个答案,用户提到使用autoSizeColumn()
会妨碍性能。所以,为了测试它,我删除了autoSizeColumn()
并检查,我的奇迹它工作正常。
我的问题 - 是因为我正在迭代16k次以自动调整列的大小,我无法完成写入过程吗?或autoSizeColumn()
有任何性能影响吗?如果是这样,我可以使用哪种替代方法,以便写入16k(大量)记录,并将列自动调整为其内容。
感谢任何形式的帮助。提前谢谢。
答案 0 :(得分:3)
如果要调整大量列,autoSizeColumn()
方法确实需要花费大量时间。
此问题的一个解决方案是仅在创建所有行之后调用所需列的autoSizeColumn()
方法,而不是在每次迭代中。
此方法的javadoc提到以下内容:
此过程在大型工作表上可能相对较慢,因此在处理结束时通常只能在每列调用一次。