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

QQ登录

只需一步,快速开始

onroader

初级会员

35

主题

85

帖子

284

积分

初级会员

积分
284
onroader
初级会员   /  发表于:2018-11-15 10:17  /   查看:3451  /  回复:11
本帖最后由 onroader 于 2018-11-15 10:18 编辑

//挂起计算引擎
spread.suspendCalcService(false);
//根据后端传过来的数据执行数据、公式绑定。
var sheet = spread.getSheet(i);
sheet.setValue(rowIndex, colIndex, value);
sheet.setFormula(rowIndex, colIndex, formula);

//恢复计算引擎
spread.resumeCalcService(false);

现在执行spread.resumeCalcService(false);会导致所有的公式计算。

我现在想要的效果是,计算引擎恢复时,不要执行公式计算,如何才能做到??

11 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-15 15:15:39
沙发
resumeCalcService(false) 只能导致您在挂起后到恢复前新添加或修改的公式重算,不会让所有的公式重算。

另外,sheet也支持挂起、恢复计算引擎,如果您想更精细地控制,可以用sheet调用挂起恢复计算的方法。
回复 使用道具 举报
onroader
初级会员   /  发表于:2018-11-15 17:40:32
板凳
本帖最后由 onroader 于 2018-11-15 18:06 编辑

我的报表数据是由WinFormSpread过来的,绑定SpreadJS时全部是手工做的。
也就是我计算引擎挂起之后,对所有的单元格进行setValue,setFormula
全部赋值之后我再恢复引擎。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-16 12:30:14
地板
恢复引擎当然会导致公式开始执行运算,这是内部逻辑,我这边调研一下看看能否用事件来阻止。
回复 使用道具 举报
onroader
初级会员   /  发表于:2018-11-16 13:28:24
5#
麻烦了。这个功能能否实现,对我们这边影响很大。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-16 15:05:45
6#
您好,我这边调研了一下,直接阻止公式执行,目前使用产品接口是无法实现的。

我想跟您就这个问题再交流一下,

1、您是因为性能问题,还是您的业务逻辑,需要公式不触发运算?

2、您既然不想让公式重算,为什么要调用resumeCalcService(false) ?

我理解的是您需要对整个spread表单来执行setValue和setFormula的操作,

那么如果不调用这个方法,就不会重算任何公式。
回复 使用道具 举报
onroader
初级会员   /  发表于:2018-11-19 09:58:41
7#
本帖最后由 onroader 于 2018-11-19 09:59 编辑

主要是考虑性能问题。
我这边的公式很多都需要到数据库取数,如果每个公式跑一边数据库,很容易死掉。

我想达到的效果是:
初始加载的时候对整个spread表单来执行setValue和setFormula的操作,这时候报表的值应该都是正确的,所以不用触发公式计算。
报表加载完成之后,如果修改了某个单元格的公式,我想仅仅是触发这个单元格的公式计算。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-19 11:39:16
8#
您好,就您这个需求,我这边调研了一下,同时也咨询了一下研发这边。

目前Spread JS 在这块的内部逻辑确实无法实现您这个需求,因为只要恢复计算引擎,公式就会重算来定义单元格的值。

您的这个需求其实我们可以提供一个思路,

您的自定义公式是需要连接数据库的,那么您完全可以在自定义公式中加一个flag,

初次加载不去跑数据库,从第二次开始再来正常执行访问后台的逻辑,

这样应该可以改善性能。
回复 使用道具 举报
onroader
初级会员   /  发表于:2018-11-19 13:34:27
9#
好,我这边也试一下。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-19 16:51:36
10#
好的,有什么问题,可以继续发帖沟通~
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部