找回密码
 立即注册

QQ登录

只需一步,快速开始

中达安

金牌服务用户

3

主题

15

帖子

46

积分

金牌服务用户

积分
46
中达安
金牌服务用户   /  发表于:2023-8-21 11:16  /   查看:2845  /  回复:11
本帖最后由 Joestar.Xu 于 2023-8-21 15:38 编辑

以官方demo举例 跨工作簿函数 https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/calculation/cross-workbook-formula/vue
步骤:
1. 准备一个外部工作簿,如图(有四个单元格有数据)
image.png285929869.png
2. Anna Mull.xlsx 选择导入此文件
3. 修改demo工作簿C4单元格,原公式 ='[Anna Mull.xlsx]Sheet1'!A2 改为 ='[Anna Mull.xlsx]Sheet1'!B2;回车
image.png354723510.png
4. 回显结果为 0,预期结果为4

期望结果: 正常根据公式回显
版本: @grapecity/spread-sheets-designer-vue": "16.0.2"

image.png888183898.png

11 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-21 15:12:51
沙发
您好,问题已重现,这边调研一下,后续有进展我会在本贴中回复您。

本帖先做保留处理了。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-23 09:15:51
板凳
您好,这是我们目前的设计使然,因为跨工作簿引用并不意味着我们会完全获取这个工作簿中所有的信息,而是只会获取当前所需要的信息,因此您在修改A1为A2的时候,是无法直接获取到A2的值的。
回复 使用道具 举报
中达安
金牌服务用户   /  发表于:2023-8-24 14:46:52
地板
Joestar.Xu 发表于 2023-8-23 09:15
您好,这是我们目前的设计使然,因为跨工作簿引用并不意味着我们会完全获取这个工作簿中所有的信息,而是只 ...

所以,用什么api可以实现预期的效果呢(用户修改跨工作簿引用函数,得到预期的值)
回复 使用道具 举报
中达安
金牌服务用户   /  发表于:2023-8-24 14:47:19
5#
Joestar.Xu 发表于 2023-8-23 09:15
您好,这是我们目前的设计使然,因为跨工作簿引用并不意味着我们会完全获取这个工作簿中所有的信息,而是只 ...

能理解,但这是个很明显的设计缺陷:
1. 与Excel 的行为不一致;也不符合用户使用对公式的理解
2. 如果是固定值就直接设置值了;既然用到公式,那必然是为了支持修改,否则跨工作簿函数有什么意义
3. 就算没获取信息也不应该回显0;这很容易让人误解
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-24 16:05:38
6#
我们当前不全部读取工作簿的数据是为了性能考虑,如果被引用的工作簿数据量很大的话,将其全部读取进来的话会非常耗费性能。

您可以直接在修改完后再执行一次updateExternalReference函数,这样是可以正常获取到值的。
回复 使用道具 举报
中达安
金牌服务用户   /  发表于:2023-8-24 16:24:57
7#
Joestar.Xu 发表于 2023-8-24 16:05
我们当前不全部读取工作簿的数据是为了性能考虑,如果被引用的工作簿数据量很大的话,将其全部读取进来的话 ...

我可以监听什么事件知道用户修改了函数,以此调用 updateExternalReference
回复 使用道具 举报
中达安
金牌服务用户   /  发表于:2023-8-24 16:28:19
8#
本帖最后由 中达安 于 2023-8-24 16:29 编辑
Joestar.Xu 发表于 2023-8-24 16:05
我们当前不全部读取工作簿的数据是为了性能考虑,如果被引用的工作簿数据量很大的话,将其全部读取进来的话 ...

我尝试过 GC.Spread.Sheets.Events.EditChange;但是界面操作填充的时候没有触发回调
回复 使用道具 举报
中达安
金牌服务用户   /  发表于:2023-8-24 16:35:57
9#
Joestar.Xu 发表于 2023-8-24 16:05
我们当前不全部读取工作簿的数据是为了性能考虑,如果被引用的工作簿数据量很大的话,将其全部读取进来的话 ...

如果考虑性能,会不会让开发者自己设置更好;例如 updateExternalReference 通过传参控制是否完全获取工作簿信息
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-24 16:55:29
10#
中达安 发表于 2023-8-24 16:28
我尝试过 GC.Spread.Sheets.Events.EditChange;但是界面操作填充的时候没有触发回调

填充操作可以参考DragFillBlock事件。

https://demo.grapecity.com.cn/sp ... vents#dragfillblock
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部