系统中有个导出数据的功能,但测试发现当要导出的数据达到几百条的时候导出时间大概要30几秒,需要优化。
autoSizeColumn()
注释掉再看导出,果然秒出。仔细看 getColumnWidth()
方法的实现,其实它在里面会遍历传入的这一行的每一行以确定其单元格宽度,取最大的作为列宽。这本来也不算什么,但是错就错在之前的 autoSizeColumn()
被放在写入每一行数据的步骤当中调用,从而导致遍历的次数成几何级增长。
于是最终的解决办法就是在把所有数据都写入之后,再对每列调一次 autoSizeColumn()
就可以了。
原文:https://www.cnblogs.com/cos0930/p/10406214.html