请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

Kosen
金牌服务用户   /  发表于:2025-5-6 16:06  /   查看:84  /  回复:5
本帖最后由 Matthew.Xue 于 2025-5-6 17:32 编辑


调研编号:GCEXCEL-11767

我们按照之前讨论的在填数据之前先暂停公式计算,等数据都填完再计算公式。但是发现,这样对于区域选择的单元格计算结果不对。麻烦看看原因。如果把workbook.setEnableCalculation(false);和workbook.calculate();注释掉结果就是对的


  1. String fileName = "cf0b4f2ee5434f709abefa9bc5a5f857";
  2.         String filePath = "D:\\MyDownloads\" + fileName + ".sjs";
  3.         Workbook workbook = new Workbook();
  4.         workbook.open(filePath, OpenFileFormat.Sjs);
  5.         workbook.setAutoParse(true);
  6.         workbook.setEnableCalculation(false);
  7.         IWorksheet worksheet = workbook.getWorksheets().get(0);
  8.         ITables tables = worksheet.getTables();
  9.         if (tables.getCount() > 0) {
  10.             tables.forEach(ITable::convertToRange);
  11.             worksheet.getUsedRange().clear();
  12.         }
  13.         worksheet.getRange("A1:C7").setValue("123");
  14.         workbook.calculate();
  15.         workbook.save("D:\\MyDownloads\" + fileName + "_1.xlsx");
复制代码


cf0b4f2ee5434f709abefa9bc5a5f857.sjs

6.91 KB, 下载次数: 1

5 个回复

倒序浏览
Matthew.Xue
超级版主   /  发表于:2025-5-6 17:13:39
沙发
您好,经过测试,sheet“区域测试”和“直接引用”的计算结果的确有误,由于Excel或Wps会自动重新计算,所以我使用SpreadJS打开xlsx文件复现了该问题。
您目前可以先在calculate之前设置setEnableCalculation为true,这样会让大部分计算结果正确,但“区域测试”中的B列结果仍然为空。
就此问题,我会和研发确认,请您耐心等待,有进展我会和您及时同步。
回复 使用道具 举报
Kosen
金牌服务用户   /  发表于:2025-5-6 17:47:31
板凳
Matthew.Xue 发表于 2025-5-6 17:13
您好,经过测试,sheet“区域测试”和“直接引用”的计算结果的确有误,由于Excel或Wps会自动重新计算,所 ...

好的谢谢,我试了下这样目前可以解决我们场景的问题。后续有进展可以再同步我一下
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2025-5-7 09:29:04
地板
Kosen 发表于 2025-5-6 17:47
好的谢谢,我试了下这样目前可以解决我们场景的问题。后续有进展可以再同步我一下

您好,该问题之前已经上报了,目前已经在8.1.1版本修复,等待版本发布即可。

评分

参与人数 1满意度 +5 收起 理由
Kosen + 5

查看全部评分

回复 使用道具 举报
Kosen
金牌服务用户   /  发表于:2025-5-7 15:47:50
5#
Matthew.Xue 发表于 2025-5-7 09:29
您好,该问题之前已经上报了,目前已经在8.1.1版本修复,等待版本发布即可。

好的谢谢,那我们就等升级啦
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2025-5-7 16:03:23
6#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部