请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

LJF_Sunny

注册会员

11

主题

24

帖子

77

积分

注册会员

积分
77
LJF_Sunny
注册会员   /  发表于:2017-10-18 17:58  /   查看:3746  /  回复:5
区域粘贴时速度很快,而一个个单元格赋值却很慢,怎么才能解决单元格赋值效率问题!

5 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-10-18 18:05:40
沙发
在循环赋值之前使用spread.suspendPaint()暂停重绘,全部赋值结束后使用spread.resumePaint()解除暂停,这样能否大幅度提升性能,因为赋值操作会触发重绘,使用上述操作,这样做多次操作只会重绘一次。
回复 使用道具 举报
LJF_Sunny
注册会员   /  发表于:2017-10-19 09:16:08
板凳
ClarkPan 发表于 2017-10-18 18:05
在循环赋值之前使用spread.suspendPaint()暂停重绘,全部赋值结束后使用spread.resumePaint()解除暂停,这 ...

用了,但是如果赋值的单元格多的话,循环N次时,效率还是非常的慢!再就是比如说好多单元格设置了关于A1的公式,在给A1赋值的同时。这些单元格也跟着重新计算了一遍,能不能将这种行为屏蔽,赋值完成后,一次性调用spread.suspendPaint()和spread.resumePaint()呀?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-10-19 10:53:48
地板
明白了,其实循环赋值本身并不慢,因为您的workbook中存在大量公式,赋值会导致公式的重新计算,所以会影响性能。
您可以在循环赋值之前使用
spread.suspendCalcService()暂停公式计算
在赋值结束后使用
spread.resumeCalcService()一并进行计算。
回复 使用道具 举报
LJF_Sunny
注册会员   /  发表于:2017-10-19 11:31:59
5#
ClarkPan 发表于 2017-10-19 10:53
明白了,其实循环赋值本身并不慢,因为您的workbook中存在大量公式,赋值会导致公式的重新计算,所以会影响 ...

那这两个方法spread.suspendPaint()、spread.resumePaint()在循环前后还需要加吗?如果需要加的话,放到哪个位置呀?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-10-19 11:57:28
6#
也要加
spread.suspendPaint();
spread.suspendCalcService();
//循环代码...
spread.resumeCalcService();
spread.resumePaint();
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部