16.0.1 性能优化
for (let i = 0; i < activeSheet.getRowCount(); i++) {for (let j = 0; j < activeSheet.getColumnCount(); j++) {
activeSheet.autoFitRow(i)
}
}这个代码设置后会卡顿有什么方法能替代这种写法呢?
只对Row进行autofit,感觉没必要再进行列的遍历了。
如果行列分别需要autoFit,也是分开循环一遍行,再循环一遍列
for (let i = 0; i < activeSheet.getRowCount(); i++) {
activeSheet.autoFitRow(i)
}
如果再需要列的autoFit
for (let i = 0; i < activeSheet.getColumnCount(); i++) {
activeSheet.autoFitColumn(i)
}
您好!楼上用户提供的方法可行。
通过您提供的代码片段,了解到您对sheet中所有单元格设置自适应行高。其实每行只需要调用一次activeSheet.autoFitRow()即可对该行所有单元格同步自适应行高。因此,可以优化代码为:
activeSheet.suspendPaint();
for (let i = 0; i < activeSheet.getRowCount(); i++) {
activeSheet.autoFitRow(i);
}
activeSheet.resumePaint();
for循环语句外的代码为挂起绘制和恢复绘制优化语句,考虑到sheet中可能包含有大量行,那么自适应行高会消耗较多时间,造成卡顿。有了挂起/恢复机制,可以有效解决这种卡顿现象。 RoyAji 发表于 2024-12-5 17:26
只对Row进行autofit,感觉没必要再进行列的遍历了。
如果行列分别需要autoFit,也是分开循环一遍行,再循 ...
好的,谢谢 Wilson.Zhang 发表于 2024-12-5 17:39
您好!楼上用户提供的方法可行。
通过您提供的代码片段,了解到您对sheet中所有单元格设置自适应行高。 ...
好的,谢谢 不客气,那就先结贴了,后续有其他问题的话随时开新帖提问哈。 nqq 发表于 2024-12-6 11:08
好的,谢谢
不客气。如有新问题,欢迎发新帖沟通。
:mj72:
页:
[1]