Apache POI中的AutoSizeColumn性能影响

时间:2014-04-29 13:49:51

标签: java excel apache apache-poi

我正在使用Apache POI创建一些记录的Excel表格。一个这样的记录有16k行。我正在使用for循环将记录写入Excel工作表,并且在每次迭代中我使用autoSizeColumn()来自动调整列的大小。这样我就无法下载/写入excel文件,因为它需要永远完成写入过程。当我浏览SO时,我遇到了一个答案,用户提到使用autoSizeColumn()会妨碍性能。所以,为了测试它,我删除了autoSizeColumn()并检查,我的奇迹它工作正常。

我的问题 - 是因为我正在迭代16k次以自动调整列的大小,我无法完成写入过程吗?或autoSizeColumn()有任何性能影响吗?如果是这样,我可以使用哪种替代方法,以便写入16k(大量)记录,并将列自动调整为其内容。

感谢任何形式的帮助。提前谢谢。

1 个答案:

答案 0 :(得分:3)

如果要调整大量列,autoSizeColumn()方法确实需要花费大量时间。 此问题的一个解决方案是仅在创建所有行之后调用所需列的autoSizeColumn()方法,而不是在每次迭代中。 此方法的javadoc提到以下内容:

此过程在大型工作表上可能相对较慢,因此在处理结束时通常只能在每列调用一次。