找回密码
 立即注册

QQ登录

只需一步,快速开始

古月梓彬
金牌服务用户   /  发表于:2024-9-5 10:39  /   查看:97  /  回复:7
本帖最后由 Wilson.Zhang 于 2024-9-14 13:56 编辑


产品:SpreadJS,GcExcel
版本:17.1.5,7.1.5
调研编号:SJS-26468,DOCXLS-11199
Last Review:2024-09-14
当前进展:SpreadJS暂无法支持需求。

spreadJs中可以输入 IFERROR(K7/(I7-J7),"-") 作为公式,在GCExcel主动调用公式解析时就会报错。(目测括号是中文)
image.png541828917.png


  1. System.ArgumentException: The syntax of this name isn't correct. Verify that the name:
  2. - Starts with a letter or underscore(_)
  3. - Doesn't include a space or character that isn't allowed
  4. - Doesn't conflict with a reference.
  5. Parameter name: name
  6.    at GrapeCity.Documents.Excel.Expressions.NameNode..ctor(String name, WorkbookReference workbook, String worksheetName, String lastWorksheetName)
  7.    at GrapeCity.Documents.Excel.Expressions.NameNode..ctor(String name)
  8.    at GrapeCity.Documents.Excel.Expressions.cos.x(com a)
  9.    at GrapeCity.Documents.Excel.Expressions.cos.j()
  10.    at GrapeCity.Documents.Excel.Expressions.cos.f(com a, SyntaxNode b)
  11.    at GrapeCity.Documents.Excel.Expressions.cos.e(Boolean a)
  12.    at GrapeCity.Documents.Excel.Expressions.cos.i()
  13.    at GrapeCity.Documents.Excel.Expressions.cos.j()
  14.    at GrapeCity.Documents.Excel.Expressions.cos.e(Boolean a)
  15.    at GrapeCity.Documents.Excel.Expressions.cos.a(String a, ParseContext b)
  16.    at GrapeCity.Documents.Excel.Expressions.SyntaxNode.Parse(String text, ParseContext context)
  17.    at GrapeCity.Documents.Excel.Expressions.FormulaSyntaxTree.Parse(String text, ParseContext context)
复制代码


这个是否是SpreadJs特性,GCExcel能否支持。不能支持的话SpreadJs能不能主动关掉这个特性

7 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:2024-9-5 11:57:25
沙发
您好!我们在SpreadJS和GcExcel都试运行了您提供的公式 IFERROR(K7/(I7-J7),"-") ,发现在SpreadJS中也无法引用中文括号中的内容,如下动图所示。SpreadJS与GcExcel保持一致,所以您应该使用西文字符。
中文括号公式中不生效.gif
回复 使用道具 举报
Wilson.Zhang 发表于 2024-9-5 11:57
您好!我们在SpreadJS和GcExcel都试运行了您提供的公式 IFERROR(K7/(I7-J7),"-") ,发现在SpreadJS中也无 ...

如图,H9单元格是可以正常在spreadJs输入但是包含特殊括号的公式。H10单元格是我手动输入的公式。H9单元格的公式在GCExcel中解析会报错
chrome_GpJPDMbJxj.gif
回复 使用道具 举报
古月梓彬 发表于 2024-9-12 19:21
如图,H9单元格是可以正常在spreadJs输入但是包含特殊括号的公式。H10单元格是我手动输入的公式。H9单元 ...

期望可以提示这种
image.png624187926.png
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:4 天前
5#

您好!以您示例中的IFERROR(K7/(I7-G7), "-")为例,IFERROR函数判断其第一个参数K7/(I7-J7)公式的计算结果是否正确,如果正确则返回计算结果,否则返回其第二个参数内容代表错误结算结果。您在公式中使用了中文括号,在IFERROR函数中计算结果出错,因此返回了"-"。

单就分别用中文和西文的括号包围I7-J7计算,使用西文括号时可正常计算,而用中文括号时计算结果为”#NAME?“,代表了错误计算结果。如下动图所示,在K14和K15单元格分别对I7-J7使用了西文和中文括号,可以看到K14单元格中计算结果正常,而K15单元格给出了计算结果异常的标识,即”#NAME?“;继续在L14和L15单元格分别使用K14和K15单元格的计算结果除K7单元格值,可以看到L14单元格计算结果正常,L15单元格计算结果异常,依然用”#NAME?“表示;继续在M14和M15单元格使用IFERROR函数计算L14和L15单元格的内容,可以看到M14单元格计算结果正常,而M15单元格显示的是IFERROR函数的异常结果。
SpreadJS公式对中文括号的支持.gif


所以,SpreadJS对包含中西文符号的公式执行了正常的计算,不支持中文括号作用在公式周围,IFERROR函数在您的示例中计算结果正常,您应该使用正确的公式语法组织公式。

您在GcExcel中解析包含中文括号的公式的需求场景是什么呢?

回复 使用道具 举报
古月梓彬
金牌服务用户   /  发表于:4 天前
6#
Wilson.Zhang 发表于 2024-9-13 09:19
您好!以您示例中的IFERROR(K7/(I7-G7), "-")为例,IFERROR函数判断其第一个参数K7/(I7-J7)公式的计算结 ...

明确一下,我的需求并不是需要在GCExcel中解析包含中文括号公式。而是需要解析所有公式,来进行一些额外的位置运算。SpreadJs上配置了这种公式,我在解析前并不知道公式对错,调用解析方法就会报错
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:4 天前
7#
古月梓彬 发表于 2024-9-13 10:29
明确一下,我的需求并不是需要在GCExcel中解析包含中文括号公式。而是需要解析所有公式,来进行一些额外 ...

了解了,我们调研一下先,请您耐心等候!
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:3 天前
8#
您好!在解析过程中,可以try-catch捕获异常,跳过这些包含了中文符号或其他不支持解析的GcExcel认为错误的公式。对于这样错误的公式,是否能从中获取到有用的信息呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部