找回密码
 立即注册

QQ登录

只需一步,快速开始

硕㏒

金牌服务用户

49

主题

140

帖子

447

积分

金牌服务用户

积分
447
硕㏒
金牌服务用户   /  发表于:2024-1-30 16:54  /   查看:1910  /  回复:3
1金币
本帖最后由 Richard.Huang 于 2024-1-31 11:17 编辑

产品:SpreadJS
版本:V16.2.6

同一个ssjson,在设计器中可以正常计算公式,在用户填报的时候使用的是组件gc-spread-sheets;
无法正常计算,不知道是什么愿意,就突然出现的这种情况,SpreadJS未做升级操作,附件中有对应的录屏和ssjson;
附件中的detailsFilling.vue,是用户填报的时候,初始化时,做的一些处理,里面有一些监听函数

设计器中表现情况.mp4

4.03 MB, 下载次数: 242

试验填报时.mp4

6.51 MB, 下载次数: 235

试验填报时的文件.ssjson

347.8 KB, 下载次数: 233

detailsFilling.vue

51.68 KB, 下载次数: 214

最佳答案

查看完整内容

从video的现象可以做出如下分析: 首先,在输入数字之后,公式并不是没有计算,而是计算出结果是0.0可以看出公式是正常走了计算的,本身公式链没有被破坏。 接下来,将ssjson在纯净的SpreadJS中导入,进行模拟填报,发现公式是可以正常计算的。说明ssjson本身序列化过程中不存在问题。 那么问题只可能出现在detailsFilling.vue文件中的逻辑上。 有因为之前计算结果是0.0,推测出可能是因为输入的值被转为了字符串导致(字符串 ...

3 个回复

正序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-1-30 17:21:59
3#
好的,看上去您的问题已经解决了,后续有其他问题的话随时开新帖提问哈。
回复 使用道具 举报
硕㏒
金牌服务用户   /  发表于:2024-1-30 17:08:45
2#
问题定位到了,是使用的监听方法导致公式有问题

评分

参与人数 1金币 +300 收起 理由
Joestar.Xu + 300 赞一个!

查看全部评分

回复 使用道具 举报
最佳答案
最佳答案
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-1-30 16:54:55
来自 4#
从video的现象可以做出如下分析:
首先,在输入数字之后,公式并不是没有计算,而是计算出结果是0.0可以看出公式是正常走了计算的,本身公式链没有被破坏。
接下来,将ssjson在纯净的SpreadJS中导入,进行模拟填报,发现公式是可以正常计算的。说明ssjson本身序列化过程中不存在问题。
那么问题只可能出现在detailsFilling.vue文件中的逻辑上。
有因为之前计算结果是0.0,推测出可能是因为输入的值被转为了字符串导致(字符串不会进行公式计算)。所以查看逻辑后应该是EditEnded这部分的逻辑导致:
image.png205232543.png
无论用户输入的是什么,通过args.editingText 获取的userValue的类型都会是一个字符串
这就导致了输入数字之后,通过userValue设置进去的是一个字符串,导致公式不计算。
  1. sheet.setValue(args.row, args.col, userValue);
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部