找回密码
 立即注册

QQ登录

只需一步,快速开始

齐天大猫

金牌服务用户

52

主题

136

帖子

466

积分

金牌服务用户

积分
466
齐天大猫
金牌服务用户   /  发表于:2024-8-13 10:46  /   查看:938  /  回复:2
1金币
本地excel在输入公式后会检测是否有循环引用并弹窗提示,如下图。但spreadjs不会有提示,只能通过设置计算最大迭代次数,后续有没有计划和本地excel保持一致呢?

image.png290914916.png image.png673192443.png

最佳答案

查看完整内容

您好!我们会反馈您的建议,如有进展,及时向您同步。另外,针对您现在的需要,您可以自定义实现,通过Worksheet:getDependents()可以了解单元格的从属信息,所以可以在打开文件时调用这个接口实现,再自定义弹窗显示引用弹窗,但是可能会有性能影响,您需要自行斟酌。

2 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2024-8-13 10:46:59
来自 3#
您好!我们会反馈您的建议,如有进展,及时向您同步。另外,针对您现在的需要,您可以自定义实现,通过Worksheet:getDependents()可以了解单元格的从属信息,所以可以在打开文件时调用这个接口实现,再自定义弹窗显示引用弹窗,但是可能会有性能影响,您需要自行斟酌。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-8-13 17:00:54
2#
SpreadJS有两种方式可以判断是否存在循环引用:

方式一,通过代码方式:
var cellInfos = spread.getCircularReference();
获取当前工作簿中是否存在循环引用
89e89712de042f9f165b27b6151d2eb.png687210998.png

在上图中,为A1单元格设置公式“=A2”,为A2单元格设置公式“=A1” ,此时通过getCircularReferenceAPI来获取工作簿中的所有循环引用单元格信息

方式二,监听事件
SpreadJS提供了UserFormulaEntered事件,可以判断是否是循环引用,
https://demo.grapecity.com.cn/sp ... pread.Sheets.Events
  1. <p>sheet.bind(GC.Spread.Sheets.Events.UserFormulaEntered, function (e, info) {</p><p>      console.log(info.isCircularReference )</p><p>});</p>
复制代码
dc8632a0cfd649b03f7ae2a7eed2107.png262847594.png

通过此方案,可以自行弹窗,如Excel中循环引用中的弹窗。


如果您想实现类似Excel中的提示。

您可以根据上述方案,判断出当前工作簿存在循环引用的单元格,然后添加形状,
参考此学习指南:
https://demo.grapecity.com.cn/sp ... pes/overview/purejs



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部