找回密码
 立即注册

QQ登录

只需一步,快速开始

Yu-Xian

注册会员

9

主题

46

帖子

187

积分

注册会员

积分
187
Yu-Xian
注册会员   /  发表于:2023-8-18 15:10  /   查看:1516  /  回复:5
本帖最后由 Yu-Xian 于 2023-8-18 15:11 编辑

目前实作应用中有利用getExternalReferences取得跨工作簿引用列表,

但想请问如果indirect执行的跨档参照公式(目前尝试过无法取得),
是否有方法可以取得?

image.png858031921.png

5 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-18 18:05:25
沙发
根据您的描述猜测,您是想说SpreadJS可以像Excel这样使用INDIRECT公式(传参工作簿路径)吗?

我这边通过学习指南中的例子测试了一下是可以正常使用的。

image.png67675475.png

您参考一下:https://demo.grapecity.com.cn/sp ... book-formula/purejs

如果我的理解有误,还请您再详细说明一下您的需求。
回复 使用道具 举报
Yu-Xian
注册会员   /  发表于:2023-8-21 08:42:53
板凳
Joestar.Xu 发表于 2023-8-18 18:05
根据您的描述猜测,您是想说SpreadJS可以像Excel这样使用INDIRECT公式(传参工作簿路径)吗?

我这边通 ...

不是的,
我的意思是使用INDIRECT的公式内容如果有跨工作簿引用,
那使用getExternalReferences取得引用清单时,
取得之引用清单内未包含该跨工作簿引用内容。

请问是否有其他方法可以取得?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-21 14:06:03
地板
明白您的意思了,也就是说您想通过INDIRECT函数来获取其他工作簿中的数据对吧?

这个目前是不支持的,从Excel的角度来说:

image.png12991026.png

在没有通过A1跨工作簿函数引入其他工作簿前,使用INDIRECT函数是无法直接获取其他工作簿的数据的。(显示为#REF!)SpreadJS同样也不支持这样的用例。
回复 使用道具 举报
Yu-Xian
注册会员   /  发表于:2023-8-21 15:50:14
5#
Joestar.Xu 发表于 2023-8-21 14:06
明白您的意思了,也就是说您想通过INDIRECT函数来获取其他工作簿中的数据对吧?

这个目前是不支持的,从 ...

不好意思,
我的问题重点其实是在"getExternalReferences取得引用清单",
而不是INDIRECT函数来获取其他工作簿中的数据。

例如现在有一个测试场景,
我利用updateExternalReference将外部数据源根据路径D:\及档名ref1.xlsx载入,
储存格A1为文本'D:\[ref1.xlsx]S1'!$A$1,
储存格A5为公式INDIRECT(A1),
此时A5的公式是可正常计算的,
但是利用getExternalReferences取的却是0笔外部数据源。

所以我的问题是想请问,
1. getExternalReferences是根据公式字段解析判断是否为跨档参照公式吗?
2. 在我上述的场景中,如果尚未利用updateExternalReference载入外部数据源时,有办法能取得A5所参照的外部数据资讯(路径D:\及档名ref1.xlsx)吗?

image.png341067504.png
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-21 17:30:46
6#
根据之前测试的结果来看,getExternalReferences是无法获取通过INDIRECT函数设置的跨工作簿函数引用。只有直接使用跨工作簿函数引用的工作簿能够被getExternalReferences获取。

关于您的第二个问题,可以使用getPrecedents接口来实现,如下图:

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