找回密码
 立即注册

QQ登录

只需一步,快速开始

nqq

注册会员

5

主题

16

帖子

61

积分

注册会员

积分
61

[已处理] 16.0.1 性能优化 关闭

nqq
注册会员   /  发表于:2024-12-5 17:12  /   查看:155  /  回复:6
1金币
for (let i = 0; i < activeSheet.getRowCount(); i++) {
  for (let j = 0; j < activeSheet.getColumnCount(); j++) {
    activeSheet.autoFitRow(i)
  }
}这个代码设置后会卡顿有什么方法能替代这种写法呢?


最佳答案

查看完整内容

只对Row进行autofit,感觉没必要再进行列的遍历了。 如果行列分别需要autoFit,也是分开循环一遍行,再循环一遍列 如果再需要列的autoFit

6 个回复

倒序浏览
最佳答案
最佳答案
RoyAji
初级会员   /  发表于:2024-12-5 17:12:07
来自 2#
只对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)
  }

评分

参与人数 1金币 +500 收起 理由
Wilson.Zhang + 500

查看全部评分

回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-12-5 17:39:20
3#
您好!楼上用户提供的方法可行。

通过您提供的代码片段,了解到您对sheet中所有单元格设置自适应行高。其实每行只需要调用一次activeSheet.autoFitRow()即可对该行所有单元格同步自适应行高。因此,可以优化代码为:
  1. activeSheet.suspendPaint();
  2. for (let i = 0; i < activeSheet.getRowCount(); i++) {
  3.     activeSheet.autoFitRow(i);
  4. }
  5. activeSheet.resumePaint();
复制代码

for循环语句外的代码为挂起绘制和恢复绘制优化语句,考虑到sheet中可能包含有大量行,那么自适应行高会消耗较多时间,造成卡顿。有了挂起/恢复机制,可以有效解决这种卡顿现象。
回复 使用道具 举报
nqq
注册会员   /  发表于:2024-12-6 11:02:27
4#
RoyAji 发表于 2024-12-5 17:26
只对Row进行autofit,感觉没必要再进行列的遍历了。
如果行列分别需要autoFit,也是分开循环一遍行,再循 ...

好的,谢谢
回复 使用道具 举报
nqq
注册会员   /  发表于:2024-12-6 11:08:59
5#
Wilson.Zhang 发表于 2024-12-5 17:39
您好!楼上用户提供的方法可行。

通过您提供的代码片段,了解到您对sheet中所有单元格设置自适应行高。 ...

好的,谢谢
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-12-6 15:21:46
6#
不客气,那就先结贴了,后续有其他问题的话随时开新帖提问哈。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-12-6 17:06:43
7#

不客气。如有新问题,欢迎发新帖沟通。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部