找回密码
 立即注册

QQ登录

只需一步,快速开始

古月梓彬
金牌服务用户   /  发表于:2024-8-12 14:00  /   查看:805  /  回复:8
企业微信截图_17234414435041.png351853331.png

使用workbook打开后有个单元格计算不正确,代码:
image.png772802734.png

sjs见附件

1.sjs

303.69 KB, 下载次数: 56

8 个回复

倒序浏览
Lewis
初级会员   /  发表于:2024-8-12 14:51:02
沙发
我看你原始的sjs没有后面的数据,是后边又改了吗? image.png670594176.png
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-12 18:33:43
板凳
您好!和楼上用户发现的现象一样,打开文件中数据仅有两列数据,根据单元格公式引用关系填充数据后得到的计算结果正常,未能复现问题。请您详细描述下操作步骤,我们参考来复现问题。
回复 使用道具 举报
古月梓彬
金牌服务用户   /  发表于:2024-8-13 10:01:35
地板
本帖最后由 古月梓彬 于 2024-8-13 10:22 编辑
Wilson.Zhang 发表于 2024-8-12 18:33
您好!和楼上用户发现的现象一样,打开文件中数据仅有两列数据,根据单元格公式引用关系填充数据后得到的计 ...

sjs是使用GCExcel导出,导出时workbook的EnableCalculation属性设置为false,再使用一个新的workbook打开,再把新的sjs导出
回复 使用道具 举报
古月梓彬
金牌服务用户   /  发表于:2024-8-13 10:22:27
5#
Wilson.Zhang 发表于 2024-8-12 18:33
您好!和楼上用户发现的现象一样,打开文件中数据仅有两列数据,根据单元格公式引用关系填充数据后得到的计 ...

你可以试试我给的代码和sjs啊,也没有复现吗
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-13 11:47:14
6#
古月梓彬 发表于 2024-8-13 10:22
你可以试试我给的代码和sjs啊,也没有复现吗

附件中只有一个.sjs文件,请问您指的代码是图片中的代码吗?
回复 使用道具 举报
古月梓彬
金牌服务用户   /  发表于:2024-8-13 16:02:14
7#
本帖最后由 古月梓彬 于 2024-8-13 16:08 编辑
Wilson.Zhang 发表于 2024-8-13 11:47
附件中只有一个.sjs文件,请问您指的代码是图片中的代码吗?

图片中的代码就做了三件事,新建个workbook,打开个1.sjs的文件,保存成2.sjs的文件。我给了你1.sjs的文件。执行一下看一看2.sjs文件的结果呗


// open file
Workbook workbook = new Workbook(ConfigurationManager.AppSettings["secret"]);
workbook.Open("./1.sjs", OpenFileFormat.Sjs);

workbook.Save("./2.sjs", SaveFileFormat.Sjs);


2.sjs

344.24 KB, 下载次数: 64

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-8-13 16:47:40
8#
本帖最后由 Richard.Ma 于 2024-8-13 16:56 编辑

已经复现了你说的问题,猜测原因是来自于CONCAT公式这里,
CONCAT公式是用于字符串连接,里面的引用的数字也会被转成字符串。所以在gc里面没有参与下一步的计算

我看了一下spreadjs和excel中目前都仍会使用这个数字字符串参与后续的计算,所以导致了结果的差异。这个需要报研发调查一下看看,然后给你反馈

DOCXLS-11064

image.png533611144.png
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-8-30 14:56:51
9#
您好,问题是由于RANDBETWEEN公式没有被自动计算导致的

作为一个临时方案,你可以通过设置Dirty来暂时解决
  1. workbook.Dirty
复制代码


产品层面的修复还在调查中,后续有进展会在帖子中更新
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部