找回密码
 立即注册

QQ登录

只需一步,快速开始

lynn8588
金牌服务用户   /  发表于:2023-12-15 10:28  /   查看:4603  /  回复:21
本帖最后由 Ellia.Duan 于 2024-1-8 11:50 编辑

产品:GcExcel
版本:V6.1.4
问题编号:DOCXLS-7267
需求编号:DOCXLS-9599

之前发过一个帖子,关于新增列公式变更的问题,地址如下:
https://gcdn.grapecity.com.cn/showtopic-159293-1-176.html

这个应该是一个bug,因为我发现在插入行的时候,即使配置了一个不存在的sheet的引用,公式变更也不会出错,但是,插入列就会变错,

同时Excel中的表现形式,即使是配置了一个不存在sheet的引用,在插行列的时候公式都不会变错,这个问题还请你们调查一下是不是BUG,或者说在新版本上是否有解决?


21 个回复

倒序浏览
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-12-15 15:01:34
沙发
您好,问题已收到,我们将继续调研下这个问题。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-12-15 16:22:36
板凳
您好,我在v6.2.5版本做了以下测试:
1、创建sheet“CIT.WP00.0_调整汇总”
2、设置公式“=CIT.WP01.1_预提费用!F7”
3、创建sheet“CIT.WP01.1_预提费用”
4、sheet增加列
发现公式引用发生变化,从F7变为G7 ,如下图所示:
for1.png
其次,按照您的描述,为sheet增加行,但是公式引用也发生了变化,如下图所示:
image.png250792845.png
但是您提到了在Excel中,没有公式引用问题,所以我将继续跟踪此问题。

回复 使用道具 举报
lynn8588
金牌服务用户   /  发表于:2023-12-15 17:34:09
地板
嗯,谢谢,据我了解,你们有一个机制,是当单元格引用了一个不存在的报表单元格的时候,用getPrecedent()方法获取单元格引用关系时,此时结果中引用公式内的报表名称会变成当前的报表名称,不知道是不是这个引起的,但是按道理,getFormula本身拿到的公式不应该变成一个错误的公式
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-12-15 17:57:25
5#
有这个可能性,已提交给开发团队深入调研这个问题。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-12-19 14:46:43
6#
您好,调研结果如下:
创建引用其他工作表的公式时,会创建一些引用索引。如果引用的工作表不存在,则在插入过程中剪切到新列的公式将无法通过引用索引更新其引用。(不存在工作表,没有引用索引。
由于现有体系结构仍然需要工作表存在才能使公式正常运行,因此建议在添加公式之前将引用的工作表放在适当的位置。
如果需要在创建工作表本身之前添加引用不存在的工作表的公式,则可以暂时禁用计算引擎,然后在处理所有更改后重新启用。
  1.      Workbook workbook = new Workbook();
  2.         IWorksheet workSheet = workbook.getWorksheets().get(0);
  3.         workSheet.setName("CIT.WP00.0_调整汇总");
  4.         workbook.setEnableCalculation(false);
  5.         workSheet.getRange(1, 1).setFormula("CIT.WP01.1_预提费用!F7");
  6.         IWorksheet worksheet1 = workbook.getWorksheets().addAfter(workSheet);
  7.         worksheet1.setName("CIT.WP01.1_预提费用");
  8.         workbook.setEnableCalculation(true);
  9.         String sourceFormula = workSheet.getRange(1, 1).getFormula();
  10.         workSheet.getRange(1, 1).getEntireColumn().insert();
  11.         String changeFormula = workSheet.getRange(1, 2).getFormula();
  12.         System.out.print(sourceFormula+','+changeFormula);
复制代码
结果如下:
image.png430194091.png
回复 使用道具 举报
lynn8588
金牌服务用户   /  发表于:2023-12-19 15:53:26
7#
那这个标记的设置,必须要成对一起使用,还是只设置false,公式也会跟着行列的变更正确变化呢?
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-12-19 17:58:25
8#
需要成对使用,如果只设置false  ,当公式引用的单元格发生变化时,公式将不更新。
回复 使用道具 举报
lynn8588
金牌服务用户   /  发表于:2023-12-19 18:42:45
9#
好的
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-12-20 09:15:53
10#
好的,有问题随时沟通。
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部