找回密码
 立即注册

QQ登录

只需一步,快速开始

lynn8588
金牌服务用户   /  发表于:2023-12-15 10:28  /   查看:4602  /  回复: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 开发认证
超级版主   /  发表于:2024-2-2 15:54:39
23#
好的,之后将在新帖中回复。
回复 使用道具 举报
lynn8588
金牌服务用户   /  发表于:2024-2-2 14:51:12
22#
经过测试以后还是发现有一些问题,已经发了新帖,地址是:
https://gcdn.grapecity.com.cn/showtopic-202641-1-1.html
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-1-31 13:43:07
21#
您好,由于您较长时间未回复,本贴先结帖了,有问题欢迎发新帖询问。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-1-23 15:24:43
20#
您好,通过楼上回复,是否可以解决您的问题呢?
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-1-22 10:13:15
19#
本帖最后由 Ellia.Duan 于 2024-1-22 10:14 编辑

您好,目前v7.0.2版本已在maven中更新。
我在本地更新了maven版本,做了以下测试,插入列后公式结果没有变化
如下图所示:
image.png174778441.png
图中的代码楼上已给出,您可以在此基础中做相应测试。

exportExcel2.java

2.19 KB, 下载次数: 482

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-1-10 10:56:45
18#
您好,关于查找不存在的sheet ,可以参考下面的代码:

  1. public static void main(String[] args) throws Exception {
  2. Workbook workbook = new Workbook();
  3. IWorksheet workSheet = workbook.getWorksheets().get(0);
  4. workSheet.setName("CIT.WP00.0_调整汇总");
  5. workSheet.getRange(1, 1).setFormula("CIT.WP01.1_预提费用!F7");
  6. workSheet.getRange(3, 3).setFormula("Sheet3!A1");


  7. FindOptions tempVar = new FindOptions();
  8. tempVar.setLookIn(FindLookIn.Texts);
  9. IRange searchRange = workSheet.getCells().specialCells(SpecialCellType.Formulas, SpecialCellsValue.Errors);

  10. IRange range = null;
  11. ArrayList<String> sheetNames = new ArrayList<String>();
  12. do {
  13.     range = searchRange.find("Ref", range,tempVar);
  14.     if (range == null) {
  15.         break;
  16.     } else {
  17.         FormulaSyntaxTree syntaxTree = FormulaSyntaxTree.Parse(range.getFormula().replaceFirst("=",""));
  18.         addNotFoundSheet(syntaxTree.getRoot(), workbook);
  19.     }
  20. } while (true);
  21. }
  22. private static void addNotFoundSheet(SyntaxNode node, Workbook workbook){
  23.     if (node == null) {
  24.         return;
  25.     }
  26.     if (node instanceof ReferenceNode) {
  27.         String sheetName = ((ReferenceNode)node).getReference().getWorksheetName();
  28.         if (workbook.getWorksheets().get(sheetName) == null) {
  29.             IWorksheet tempSheet = workbook.getWorksheets().add();
  30.             tempSheet.setName(sheetName);
  31.         }
  32.     }
  33.     for (SyntaxNode child : node.getChildren()) {
  34.         addNotFoundSheet(child, workbook);
  35.     }
  36. }
复制代码
您可以对此demo进行测试,看是否可以查到所有的sheet。
添加sheet后,插入列后公式发生变化的问题将在v7.0.2版本修复,修复后,在此demo基础上,插入列将不会导致公式变化。

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-12-26 16:24:25
16#
您好,已重新调研您的问题,待有进展,会及时联系您。
回复 使用道具 举报
lynn8588
金牌服务用户   /  发表于:2023-12-26 14:39:34
15#
Ellia.Duan 发表于 2023-12-25 10:35
您好,是否可以留下您的联系方式,电话沟通一下?

已经私信给您了
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-12-25 10:35:13
14#
您好,是否可以留下您的联系方式,电话沟通一下?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-12-21 17:52:04
13#
您好,这边调研一下,后续有进展会在本帖中回复您。
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部