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

QQ登录

只需一步,快速开始

gaosion

注册会员

2

主题

23

帖子

51

积分

注册会员

积分
51
最新发帖
gaosion
注册会员   /  发表于:2017-12-27 15:58  /   查看:7233  /  回复:14
在我们的自定义跨工作簿函数中,如果目标位置的sheetname改变了,再渲染数据时,我们需要获取新的sheetname并更新函数,目前所有逻辑都已实现,但是不希望它重新计算,请问能否实现?

14 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-12-27 16:35:06
沙发
公式改变了而不进行重新计算,这个首先就是一个违背正常逻辑的做法。这样跟删除掉公式只保留值没有区别,失去了公式存在的意义。目前只有SuspendCalcService能够暂停所有的公式计算,但是如果只暂停不恢复,那么所有的公式计算都会失效。如果恢复那么到时候还是会再进行计算。
回复 使用道具 举报
gaosion
注册会员   /  发表于:2017-12-27 16:38:44
板凳
在异步函数的回调中有没有其他的方式可以设置新函数呢?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-12-27 19:00:00
地板
函数的目的就是用来进行计算,如果在函数中掺杂其他操作会造成不可预知的问题,因为机制是先计算,然后将计算结果返回,如果在这中间掺杂了其他例如setFormular之类的操作又会触发计算机制,这样会有不可预知的问题,也不符合Excel函数本身的定义
回复 使用道具 举报
gaosion
注册会员   /  发表于:2017-12-28 09:51:12
5#
可否告知spreadJS内置的跨sheet函数,当sheet名改变后,内置函数能更新,这里是怎么做到的?
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2017-12-28 12:25:38
6#
你的公式怎么写的? spreadjs内部保存的是表达式树和 sheet 实例的引用,根本没有保存公式字符串。所以 sheet 改名后,不需要做任何事,下次取 formula 字符串的时候就是最新的了
回复 使用道具 举报
gaosion
注册会员   /  发表于:2017-12-28 12:50:05
7#
我的公式是以字符串的形式写入的,渲染时解析字符串,找对应的数据异步渲染,您说的保存表达式树和sheet实例的引用,不太明白到底应该如何实现,能否给个demo给我看看呢?
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2017-12-28 13:44:37
8#
你的公式字符串是怎么写的?
回复 使用道具 举报
gaosion
注册会员   /  发表于:2017-12-28 14:10:54
9#
=CWBEQ("[926:2]Sheet1",'cwb'!D6)    '[id:sheetindex]sheetname',cwb!cell   id对应目标数据在数据库中的id,sheetindex为sheet索引,用来更新sheet名的,sheet名用来获取sheet,cwb!新增的空表防止循环引用,cell单元格信息
回复 使用道具 举报
gaosion
注册会员   /  发表于:2017-12-28 14:13:49
10#
添加时用的setFormula方法添加进去的
image.png603129882.png
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部