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

QQ登录

只需一步,快速开始

eyAndrew
金牌服务用户   /  发表于:2025-4-10 17:01  /   查看:151  /  回复:14
本帖最后由 eyAndrew 于 2025-4-10 17:06 编辑

image.png750989379.png
image.png50484618.png

如图所示: 这是一个自定义公式,spread全局绑定,现在的问题是 点击任何单元格都会触发这里evaluate执行(多次执行),就会导致卡顿。
单元格并没有绑定这个公式, 这是正常的么? 怎么优化?

14 个回复

倒序浏览
eyAndrew
金牌服务用户   /  发表于:2025-4-10 17:16:07
沙发
image.png548959044.png
点击单元格会执行14次, 是因为有14个单元格使用这个自定义公式么?

重复执行3回,是因为重复绑定了三次这个自定义公式(可以重名)?
回复 使用道具 举报
eyAndrew
金牌服务用户   /  发表于:2025-4-10 17:18:09
板凳
image.png284207762.png 新增一个空白sheet页,会重复执行9回
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-4-10 17:32:25
地板
您好!参考您提供图示中的代码片段,测试未能复现问题,如下动图所示,在单元格中输入自定义公式后仅触发一次计算,且新增sheet也不会触发自定义公式计算:
自定义公式计算.gif

附件为所使用的完整代码,您可以亲测了解。可以排查下是否有其他代码影响,也可以提供一个能够复现问题的完整demo,不需要提供业务或隐私数据,我根据demo测试分析。

18.0.6自定义公式.html

5.63 KB, 下载次数: 10

回复 使用道具 举报
eyAndrew
金牌服务用户   /  发表于:2025-4-11 09:26:45
5#
其他代码影响? 这个自定义公式重复注册,会重复执行么? 我理解应该不会把?  逻辑比较多,有没有排查思路提供下,哪些地方有可能会影响
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-4-11 10:07:01
6#
eyAndrew 发表于 2025-4-11 09:26
其他代码影响? 这个自定义公式重复注册,会重复执行么? 我理解应该不会把?  逻辑比较多,有没有排查思路 ...

请教下您在问题中的描述“spread全局绑定”指的是Workbook:addCustomFunction()还是CalcEngine:defineGlobalCustomFunction()?

测试发现连续执行多次上述两个接口注册同一个自定义公式函数,代码如下图所示:
1744337194185.png180971984.png

在使用自定义公式时也仅执行一次,所以应该不会重复执行。对一个单元格输入自定义公式后可以触发公式计算,Workbook:calculate()手动触发计算。

可以沿如下方向排查:
1. 在自定义公式的evaluate方法代码中打印公式所在单元格行列信息,观察公式在同一个单元格还是不同单元格,进一步排查代码中是否有对这些单元格设置公式。
2. 代码中是否调用Workbook:calculate()手动计算。
回复 使用道具 举报
eyAndrew
金牌服务用户   /  发表于:2025-4-11 11:15:40
7#
Wilson.Zhang 发表于 2025-4-11 10:07
请教下您在问题中的描述“spread全局绑定”指的是Workbook:addCustomFunction()还是CalcEngine:defineGlo ...

GC.Spread.CalcEngine.Functions.defineGlobalCustomFunction('TITRACE', new TITRACE()) 这样添加的
回复 使用道具 举报
eyAndrew
金牌服务用户   /  发表于:2025-4-11 11:33:13
8#
image.png556542357.png 看了下单元格位置信息, 点击新的空白单元格,还是触发整个spreadjs配置的这14个自定义单元格
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-4-11 12:14:06
9#
eyAndrew 发表于 2025-4-11 11:15
GC.Spread.CalcEngine.Functions.defineGlobalCustomFunction('TITRACE', new TITRACE()) 这样添加的

代码正常,我也测试过这种注册方式,没有复现问题现象。您可以先参考在6楼给您的排查方向排查,如果排查无果,可以提供一个能够复现问题的完整demo,不需要携带私密业务数据,仅复现问题即可。同时,同步下复现步骤。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:4 天前
10#
请问楼主问题解决了吗?如仍有疑问,请提供所需资料,以便问题的进一步调研
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部