请选择 进入手机版 | 继续访问电脑版
首页
开发者学堂
文档
论坛
市场
生态机会
活动

eyAndrew

金牌服务用户

94

主题

436

帖子

1254

积分

金牌服务用户

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




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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

14 个回复

eyAndrew
金牌服务用户   /  发表于:2025-4-10 17:16:07 沙发

点击单元格会执行14次, 是因为有14个单元格使用这个自定义公式么?

重复执行3回,是因为重复绑定了三次这个自定义公式(可以重名)?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
eyAndrew
金牌服务用户   /  发表于:2025-4-10 17:18:09 板凳
新增一个空白sheet页,会重复执行9回

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-4-10 17:32:25 地板
您好!参考您提供图示中的代码片段,测试未能复现问题,如下动图所示,在单元格中输入自定义公式后仅触发一次计算,且新增sheet也不会触发自定义公式计算:


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
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()?

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


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

可以沿如下方向排查:
1. 在自定义公式的evaluate方法代码中打印公式所在单元格行列信息,观察公式在同一个单元格还是不同单元格,进一步排查代码中是否有对这些单元格设置公式。
2. 代码中是否调用Workbook:calculate()手动计算。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
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#
看了下单元格位置信息, 点击新的空白单元格,还是触发整个spreadjs配置的这14个自定义单元格

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
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 开发认证
超级版主   /  发表于:2025-4-21 09:33:37 10#
请问楼主问题解决了吗?如仍有疑问,请提供所需资料,以便问题的进一步调研
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部
求助中心
快速入口