找回密码
 立即注册

QQ登录

只需一步,快速开始

时光不老

注册会员

6

主题

29

帖子

75

积分

注册会员

积分
75
时光不老
注册会员   /  发表于:2022-3-17 09:17  /   查看:4362  /  回复:17
1金币
image.png538535766.png

最佳答案

查看完整内容

我仔细的debug了一下,说一下结论: 结论一: 首先这个不是V15跟V14的差异,V15与V14显示的效果是一模一样的 下面的两张截图一张是您提供的工程文件中V14版本打开的结果,一张是V15版本打开的结果 V14: V15: 结论无论V14还是V15中显示结果都是P9 : P21,说明不是版本问题。 那么为什么会出现P9 : P21呢,我详细的调研之后问题出在这里 结论二: 我在如下图所示之处打了断点 这个时候红框中是有公式的并且是您期望 ...

17 个回复

倒序浏览
最佳答案
最佳答案
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-3-17 09:17:24
来自 10#
本帖最后由 Clark.Pan 于 2022-3-21 09:38 编辑

我仔细的debug了一下,说一下结论:
结论一:
首先这个不是V15跟V14的差异,V15与V14显示的效果是一模一样的
下面的两张截图一张是您提供的工程文件中V14版本打开的结果,一张是V15版本打开的结果
V14:
image.png261608885.png
V15:
image.png793347167.png
结论无论V14还是V15中显示结果都是P9 : P21,说明不是版本问题。
那么为什么会出现P9 : P21呢,我详细的调研之后问题出在这里
结论二:
我在如下图所示之处打了断点
image.png406114806.png
这个时候红框中是有公式的并且是您期望的结果
image.png383274230.png
但是在addRow之后,引用的P9 : P11就会变成P9 : P12
image.png300733947.png
这是为什么,让我们倒回到addRow之前看一下这句代码
image.png725127563.png
debug的结果表明这个是在第10行后增加一行
image.png74503478.png
而您之前的公式引用是P9 : P11 第10行刚好在P9 : P11的范围之间。
这个是时候第10行增加一行就会导致P9 : P11变成P9 : P12。而您这个是一个循环操作,会一直循环增行,最终导致了循环结束后P9 : P11变成了P9 : P21
但是上述在公式引用中增行会改变公式引用范围的这个策略是与Excel是完全一致的。您可以在Excel中做如下测试:
image.png213994139.png
我在G4中设置了G5 : G7的一个公式引用。这时候我给G6下方插入一行,看看结果会变成什么
image.png934348449.png
结果就会变成G5 : G8。从这个测试可以反证SpreadJS的策略没有任何问题,符合Excel的使用逻辑。也就是说您的使用方法是错误的,并不是SpreadJS有问题。
那么如何纠正错误呢:
您只能将设置公式的相关代码在添加行的操作整个完毕之后再进行,或者确保添加行的时候没有上述在引用范围之中去添加行的操作才可以。

另外,您用的方式确实不是最好的办法,看到您的代码中是将json中的数据设置到指定的单元格里。这个更快捷的方式使用数据绑定来做。参考学习指南中对数据绑定的相关介绍。
https://demo.grapecity.com.cn/sp ... evel-binding/purejs
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-3-17 09:50:30
2#
您好,请提供一下这个页面的ssjson,我们具体调查一下,经凭借目前的截图无法深入查看原因。
回复 使用道具 举报
时光不老
注册会员   /  发表于:2022-3-17 10:12:58
3#
本帖最后由 时光不老 于 2022-3-17 10:18 编辑
Clark.Pan 发表于 2022-3-17 09:50
您好,请提供一下这个页面的ssjson,我们具体调查一下,经凭借目前的截图无法深入查看原因。

这个是原始的ssjson,加数据导入后,导出来的文件。

公式渲染错误.ssjson

186.78 KB, 下载次数: 398

回复 使用道具 举报
时光不老
注册会员   /  发表于:2022-3-17 10:53:35
4#
退到14就正常了
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-3-17 11:03:51
5#
我在V15的版本中没能按照你的设置没能重现出问题,建议您debug一下您的setFormula方法,如果还没有问题,请继续排查一下是否还有别的影响
image.png289978331.png
回复 使用道具 举报
时光不老
注册会员   /  发表于:2022-3-17 11:15:14
6#
Clark.Pan 发表于 2022-3-17 11:03
我在V15的版本中没能按照你的设置没能重现出问题,建议您debug一下您的setFormula方法,如果还没有问题,请 ...

我前端技术有限,还是先退回14了,不用15了。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-3-17 11:26:25
7#
我觉得问题并不是升级V15造成的,如果您用V14没问题可否提供一个完整我们用V14也试一下。
当然,您可以选择用回V14,但是V14~V15之间修复了很多的bug,万一您哪天碰上了,您还是要升级的。
回复 使用道具 举报
时光不老
注册会员   /  发表于:2022-3-18 15:49:19
8#
Clark.Pan 发表于 2022-3-17 11:26
我觉得问题并不是升级V15造成的,如果您用V14没问题可否提供一个完整我们用V14也试一下。
当然,您可以选 ...

单独拿出来确实是也不行了,可是项目里用的v14又确实好着,搞不清楚了,麻烦帮忙看看是哪里有问题。不过项目里用的是14.1.5

purejs.zip

2.48 MB, 下载次数: 383

回复 使用道具 举报
时光不老
注册会员   /  发表于:2022-3-18 15:50:24
9#
另外再帮忙看看,这样用 葡萄城的方式 是不是 不太对,给指点一下正确用法。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部