This question already has answers here:
A POI related code block running dead slow
                                
                                    (3个答案)
                                
                        
                5年前关闭。
            
        

我正在使用Apache POI创建一些记录的Excel工作表。其中一条记录有16k行。我正在使用for循环将记录写入excel工作表,并且在每次迭代中,我都使用autoSizeColumn()自动调整列的大小。这样,我将无法下载/写入excel文件,因为它要花很长时间才能完成写入过程。在浏览SO时,我遇到一个答案,用户曾提到autoSizeColumn()的使用会影响性能。因此,为了测试这一点,我删除了autoSizeColumn()并检查了一下,令我感到惊讶。

我的问题-是因为我要迭代16k次以自动调整列大小,所以我无法完成写入过程?还是autoSizeColumn()有任何性能影响?如果是这样,我可以使用什么替代方法,以便写入16k(大量)记录以及使列自动调整大小以适合其内容。

任何帮助都将受到赞赏。提前致谢。

最佳答案

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

在大张纸上,此过程可能相对较慢,因此在处理结束时,通常每列仅应调用一次。

10-08 19:26