找回密码
 立即注册

QQ登录

只需一步,快速开始

白鱼
初级会员   /  发表于:2024-4-18 09:44  /   查看:922  /  回复:14
1金币
本帖最后由 白鱼 于 2024-4-19 16:06 编辑

该测试用例中json数据是spread.toJSON()导出的,再次导入时,我们可以看到自定义函数SRCFX()的值重新计算就报错了,导入时应该可以看到原值是 宁德时代
测试用例中我添加了自定义函数,异步计算值为10000,可以看到复制该公式到其它单元格时,可以触发计算,但是fromJSON之后再重新添加自定义函数,却没有生效。

测试代码见附件,src目录是压缩文件需再次解压。


image.png241004027.png


image.png309072570.png



image.png284237975.png

demo-test.zip

50.14 KB, 下载次数: 35

14 个回复

正序浏览
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-23 17:17:17
15#
白鱼 发表于 2024-4-23 11:31
这样做可以导入了。但是还有一个问题,因为业务需要,我在异步函数对象中设置了一个id用以辨识业务对象。 ...

您好,为了便于其他小伙伴对于主贴中问题的了解,我们建议一个问题一个回答,本贴问题解决了,这里就先结贴了。

对于您的新的问题,我想了解您需要这样一个id做什么呢?因为正常情况下一个函数的目的是将您给的参数进行一些逻辑计算,然后返回给您对应的结果,完全不需要自定义的属性去做处理判断。您可以新开一个帖子,详细描述一下您的需求和场景,方便我们进行对应的调研
回复 使用道具 举报
白鱼
初级会员   /  发表于:2024-4-23 11:31:03
14#
Richard.Huang 发表于 2024-4-23 10:42
最新调研进展:本贴中提及的问题可以在代码中添加以下代码逻辑,手动解析ssjson文件中的自定义属性:

这样做可以导入了。但是还有一个问题,因为业务需要,我在异步函数对象中设置了一个id用以辨识业务对象。我们业务场景可以同时打开多个excel对象,我原先的做法是每一个excel对象都设置一个自定义函数。现在这种方式我这边看,每次打开时都使用的保存时的自定义函数对象,在当前上下文中,原先的id已经失效。那么是否可以在计算时传参增加自定义属性?我需要将该id传入该如何处理?
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-23 10:42:05
13#
最新调研进展:本贴中提及的问题可以在代码中添加以下代码逻辑,手动解析ssjson文件中的自定义属性:
  1. GC.Spread.Sheets.getTypeFromString = function (typeStr: string) {
  2.     if (typeStr === 'mynamespace.MyFunction') {
  3.         return mynamespace.MyFunction;
  4.     }
  5. }
复制代码

image.png97646178.png
具体这样做可以成功的原因可以参考这篇知识库文章:https://demo.grapecity.com.cn/sp ... 0%E6%97%A0%E6%95%88
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-22 18:14:55
12#
白鱼 发表于 2024-4-22 15:29
你好,设置json数据后没有数据,我这边临时解决方案是重置了这里的公式和值,可以重新计算得到数据。但是 ...

也许您可以尝试使用suspendCalcService:https://demo.grapecity.com.cn/sp ... #suspendcalcservice
回复 使用道具 举报
白鱼
初级会员   /  发表于:2024-4-22 15:29:31
11#
Richard.Huang 发表于 2024-4-19 18:18
您好,您在帖子中所描述的现象我在本地进行了重现,至于该现象的原因我们还需要进行进一步的调研定位。后续 ...

你好,设置json数据后没有数据,我这边临时解决方案是重置了这里的公式和值,可以重新计算得到数据。但是这里有个问题,因为数据量比较多,这里设置时等待所有值都计算完再设置花费较多时间,我就想统一设置,全局设置了setIntervel间隔一定时间批量设置context.setAsyncResult(value)。可是统一设置时我发现耗时并没有减少,这里是否有类似于suspendPaint之类的设置,可以等我批量设置完所有异步值再渲染来减少耗时?
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-22 14:02:11
10#
回复 使用道具 举报
白鱼
初级会员   /  发表于:2024-4-22 09:25:15
9#
Richard.Huang 发表于 2024-4-19 18:18
您好,您在帖子中所描述的现象我在本地进行了重现,至于该现象的原因我们还需要进行进一步的调研定位。后 ...

好的,感谢
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-19 18:18:51
8#
本帖最后由 Richard.Huang 于 2024-4-22 14:01 编辑
白鱼 发表于 2024-4-19 16:04
你好,我用你这个demo试过了,确实可以。但是你这里是通过cdn引入的包,我用了npm导入之后,所有代码都是 ...
您好,您在帖子中所描述的现象我在本地进行了重现,至于该现象的原因我们还需要进行进一步的调研定位。后续有相关调研进展我会第一时间在本贴中进行跟进。问题编号:SJS-23938
回复 使用道具 举报
白鱼
初级会员   /  发表于:2024-4-19 16:04:56
7#
Richard.Huang 发表于 2024-4-19 12:11
您可以参考附件的demo

你好,我用你这个demo试过了,确实可以。但是你这里是通过cdn引入的包,我用了npm导入之后,所有代码都是一样的,具体请查看更新的附件文件。步骤很简单,从你给我的测试demo导出一个文件,然后两边导入看,发现你给的demo导入没问题,但是我通过npm方式引入的包就会有问题。麻烦再看下
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-19 12:11:26
6#
白鱼 发表于 2024-4-18 18:49
我这边看没有区别,你那边可以给我提供一个demo吗?导出之后再次导入计算不会变成#Name的场景?

您可以参考附件的demo

features_workbook_custom-item-serialization_JavaScript.rar

2.27 KB, 下载次数: 33

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