找回密码
 立即注册

QQ登录

只需一步,快速开始

如风

中级会员

104

主题

351

帖子

899

积分

中级会员

积分
899

微信认证勋章

如风
中级会员   /  发表于:2020-8-27 09:14  /   查看:3626  /  回复:8
大量的自定义公式和系统公式计算导致响应慢,怎么优化,

8 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-8-27 09:31:09
沙发
您好,您可以通过suspendPaint和resumePaint减少重绘次数来进行优化,

也可以对Workbook的calcOnDemand配置,用法:spread.options.calcOnDemand = true;

关于此问题更多内容推荐您阅读此篇文章:https://gcdn.grapecity.com.cn/showtopic-74083-1-4.html

如果上述办法不能解决您的问题,建议您提供能复现问题的demo来帮助我们更好的解决此问题。
回复 使用道具 举报
如风
中级会员   /  发表于:2020-9-4 09:24:01
板凳
用了上述方法,可以明显提高速度,但会出现脏数据,
spread.options.calcOnDemand = true;
spread.suspendCalcService(false);
spread.resumeCalcService(true);
回复 使用道具 举报
如风
中级会员   /  发表于:2020-9-4 09:25:23
地板
使用suspendDirty也会导致脏数据,之前反馈到你们技术支持那边,问哈现在怎么样了
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-9-4 10:49:29
5#
本帖最后由 DerrickJiao 于 2020-9-4 10:51 编辑
如风 发表于 2020-9-4 09:25
使用suspendDirty也会导致脏数据,之前反馈到你们技术支持那边,问哈现在怎么样了

收到,我们先尝试复现这个问题,需要一些时间调研,预计下午回复您
回复 使用道具 举报
如风
中级会员   /  发表于:2020-9-4 12:46:10
6#
spreadBind.spread.suspendCalcService(false);
                                spreadBind.spread.suspendPaint();
spreadBind.spread.resumeCalcService(true);
                                spreadBind.spread.resumePaint();
这样会导致脏数据么
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-9-4 15:42:10
7#
如风 发表于 2020-9-4 12:46
spreadBind.spread.suspendCalcService(false);
                                spreadBind.spread.su ...

关于suspendCalcService这个问题
您可以参考这个帖子

https://gcdn.grapecity.com.cn/showtopic-51129-1-192.html

从代码上看,看不出什么问题,建议您对此的疑问提供一个可复现问题的demo

能有效提高咱们沟通的效率,更好地给您解决
回复 使用道具 举报
如风
中级会员   /  发表于:2020-9-4 16:52:04
8#
1.在公式里面使用 context.source.getSheet().getCell(context.row, context.column).formatter(new GC.Spread.Formatter.GeneralFormatter(decimal));和setValue会导致resumeCalcService()卡顿,怎么在自定义公式里面设置单元格的formatter和Value,实现通过自定义公式,动态保存单元格的小数位数

2.这个问题怎么样了
问题 1.png
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-9-4 18:01:58
9#
1、设置单元格的格式和定义自定义公式建议分开设置。

本身自定义公式的目的是自定义一套逻辑处理计算结果的Value,您要设置他的格式需要用setFormatter方法去设置。

如果您的计算结果是 0.1234 您想要让它的Value 是0.12 ,这个可以用toFixed方法实现。

如果您是想要它的Value是0.1234,但是显示出来 0.12,就需要单独用setFormatte设置他的格式,而不是在自定义公式的逻辑中处理。

2、您之前反馈的问题还需要进一步调研,有结果给您回复,暂时改为保留处理。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部