找回密码
 立即注册

QQ登录

只需一步,快速开始

陈皮

中级会员

43

主题

243

帖子

772

积分

中级会员

积分
772

悬赏达人

陈皮
中级会员   /  发表于:2023-7-28 18:49  /   查看:974  /  回复:5
1金币
需求:

当包含INDIRECT函数的单元格所在行被删除时,获取该INDIRECT函数所引用的单元格所在位置

问题:
1.使用getDependents获取引用获取不到,原因是INDIRECT引用的是文本,与引用单元格并没有引用关系?
INDIRECT获取引用(dependents).gif
2.当包含INDIRECT函数的单元格所在行被删除,通过getDirtyRows获取引用单元格,但是测试发现删除不包含INDIRECT函数的单元格所在行时,引用单元格也会变为脏行,与预期不符
INDIRECT获取引用(getDirtyRows).gif
demo见附件

20230728_删除行脏数据.rar

225.6 KB, 下载次数: 65

最佳答案

查看完整内容

您好,问题1这边已经复现,确实无法获取到引用。这一块目前没有其他的办法能够通过API的方式直接获得引用,只能通过getFormula来获取到这个公式,然后自行去对其解析。 问题2中的getDirtyRows,我看了您的代码,您在代码中监听了rowChanging事件,当删除行时就会触发,而之所以会在控制台输出,是因为您一开始就对sheet2中的第三行的数据进行了修改(sheet2.setFormula(2, 2, 'INDIRECT("sheet1!C3")')),控制台输出的结果为sh ...

5 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-7-28 18:49:33
来自 2#
本帖最后由 Joestar.Xu 于 2023-7-31 10:30 编辑

您好,问题1这边已经复现,确实无法获取到引用。这一块目前没有其他的办法能够通过API的方式直接获得引用,只能通过getFormula来获取到这个公式,然后自行去对其解析。

问题2中的getDirtyRows,我看了您的代码,您在代码中监听了rowChanging事件,当删除行时就会触发,而之所以会在控制台输出,是因为您一开始就对sheet2中的第三行的数据进行了修改(sheet2.setFormula(2, 2, 'INDIRECT("sheet1!C3")')),控制台输出的结果为sheet2.getDirtyRows(),所以无论如何都会输出这个被修改了的脏行,与它是不是INDIRECT函数没有关系。
SpreadJS 17.0.8 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
陈皮
中级会员   /  发表于:2023-7-31 12:00:49
3#
Joestar.Xu 发表于 2023-7-31 10:27
您好,问题1这边已经复现,确实无法获取到引用。这一块目前没有其他的办法能够通过API的方式直接获得引用, ...

还有一个问题:清除脏数据除了这5个方法还有其他触发条件吗:
image.png346687011.png
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-7-31 13:33:40
4#
陈皮 发表于 2023-7-31 12:00
还有一个问题:清除脏数据除了这5个方法还有其他触发条件吗:

没有了,只有这五个接口会操作会清空脏数据。
SpreadJS 17.0.8 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
陈皮
中级会员   /  发表于:2023-7-31 14:02:16
5#
Joestar.Xu 发表于 2023-7-31 13:33
没有了,只有这五个接口会操作会清空脏数据。

好的,了解了
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-7-31 14:13:22
6#

后续有其他问题的话随时开贴提问哈。
SpreadJS 17.0.8 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部