nutstore 发表于 2023-7-27 17:52:18

GcExcel6.1.4 复杂的Lambda公式报错[DOCXLS-8620]

本帖最后由 Joestar.Xu 于 2023-7-28 10:34 编辑

如图, 定义一个转换中文金额大写的lambda公式运行报错, 这个lambda公式在spreadjs下能正常使用



代码如下:

      Workbook workbook = new Workbook();

      workbook.getNames().add("ADD1", "=LAMBDA(x, X+1)");
      workbook.getActiveSheet().getRange("A1").setFormula("=ADD1(123)");
      System.out.println(workbook.getActiveSheet().getRange("A1").getValue());

      workbook.getNames().add("CNAMOUNT", "=LAMBDA(amount, \"\"&IF(TRIM(amount)=\"\",\"\",IF(amount=0,\"\",\"\"&IF(amount<0,\"负\",\"\")&IF(INT(amount),TEXT(INT(ABS(amount)),\"\")&\"圆\",)&IF(INT(ABS(amount)*10)-INT(ABS(amount))*10,TEXT(INT(ABS(amount)*10)-INT(ABS(amount))*10,\"\")&\"角\",IF(INT(ABS(amount))=ABS(amount),,IF(ABS(amount)<0.1,,\"零\")))&IF(ROUND(ABS(amount)*100-INT(ABS(amount)*10)*10,),TEXT(ROUND(ABS(amount)*100-INT(ABS(amount)*10)*10,),\"\")&\"分\",\"整\"))))");
      workbook.getActiveSheet().getRange("A2").setFormula("=CNAMOUNT(123)");
      System.out.println(workbook.getActiveSheet().getRange("A2").getValue());




nutstore 发表于 2023-7-27 17:54:42

不知道图为啥没贴上, 还导致提交报错

这是上面问题的报错截图

Joestar.Xu 发表于 2023-7-28 09:12:19

您好,您提到SpreadJS是正常的,我这边试了一下,SpreadJS也显示计算错误,应该如何修改才能使SpreadJS中也能正常显示呢?

nutstore 发表于 2023-7-28 09:22:17

Joestar.Xu 发表于 2023-7-28 09:12
您好,您提到SpreadJS是正常的,我这边试了一下,SpreadJS也显示计算错误,应该如何修改才能使SpreadJS中也 ...

你要把lambda公式通过名称管理器添加, 如图



然后在找个单元格输入公式

=CNAMOUNT(123)



结果如下:


nutstore 发表于 2023-7-28 09:27:27

这论坛有bug, 有些情况下图片贴不上, 看这个截图


Joestar.Xu 发表于 2023-7-28 10:14:13

您好,问题已重现,这边调研一下,后续有进展我会在本贴中回复您。

本帖先做保留处理了。

Joestar.Xu 发表于 2023-8-2 11:40:19

您好,该问题已被确认为是一个Bug,目前正在修复中,等修复完毕我会在帖子下回复您。

Joestar.Xu 发表于 2023-8-31 10:25:21

您好,该问题已在6.2.1中修复,您可以升级后再试试看。
页: [1]
查看完整版本: GcExcel6.1.4 复杂的Lambda公式报错[DOCXLS-8620]