找回密码
 立即注册

QQ登录

只需一步,快速开始

低调的繁华
金牌服务用户   /  发表于:2023-12-23 20:07  /   查看:1110  /  回复:4
本帖最后由 低调的繁华 于 2023-12-23 20:11 编辑

image.png678660888.png
后端gc上数使用如上所示模板,在所有公式引用单元格为后端上数单元格时(全部引用A1,A2),gc可以正常执行上数,如果改变其中某一个单元格为非后端上数的单元格(如B1,B2)时,则会报错"Can't get value of template 'xxxxxxx'"异常。同时在实际验证时C列其他公式可以写成“{{=xxx}}”格式,但是C10和C16单元和格内的函数公式必须写成{{==xxx}}才可以。否则同样会在gc上数时报出"Can't get value of template 'xxxxxxx'"异常

目前只验证了当前C列相关公式函数,其他待验证补充。相关代码及模板已上传附件。

GcExcel_Maven.zip

26.92 KB, 下载次数: 65

4 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-12-25 14:28:11
沙发
您好,
问题1:“公式引用单元格(如B1,B2)时,则会报错"Can't get value of template 'xxxxxxx'"异常。”

问题2:“C10和C16单元和格内的函数公式必须写成{{==xxx}}才可以。否则报出"Can't get value of template 'xxxxxxx'"异常。”

上述两个问题均已复现,正在进一步调研原因中,待有进展贴中通知您。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-1-15 14:08:17
板凳
更新调研进展:
首先需要了解模板语言中 单等号与双等号的区别。
对于单等号,是在模板填充的时候进行公式计算,导出的是公式计算的结果。
对于双等号,是在模板填充的时候不做公式计算,仅是导出时候保留公式。
其中,使用单等号会有如下限制:

1、支持使用运算符,如“+”、“-”、“*”、“/”和“()”,计算项可以为 ds.count 这种字段,或者 内有模板的单元格(如您例中的A1单元格)。
对于例中的B1、B2普通单元格就不允许了,所以会报问题1所示错误。
从业务角度来看,如果公式中需要直接引用B1、B2单元格,直接写公式就好,不需要走模板语言(即加双括号)。
也可以修改为双等号,此时公式会被保留,不会提示上述错误。


2、目前单等号中对于函数的支持是有限的(如 sum、if、average等),且要求参数必须是一个fieldName
{{=sum(A1)*2}}之所以可以正常执行,是由于A1是模板单元格,可以作为一个fieldName入参。
而A1:A2则很显然是一个单元格引用,所以提示错误。
所以,并不是average公式不支持单等号用法,而是跟参数有关,换句话说,您修改为 {{=sum(A1:A1)*2}},也是会报错的。
解决方案就是,针对类似需求,将单等号修改为双等号即可。或者如果业务中公式单元格不需要自动填充,也可以不使用模板语言,直接设置公式。




回复 使用道具 举报
低调的繁华
金牌服务用户   /  发表于:2024-1-16 15:18:26
地板
Lynn.Dou 发表于 2024-1-15 14:08
更新调研进展:
首先需要了解模板语言中 单等号与双等号的区别。
对于单等号,是在模板填充的时候进行公 ...

好的 感谢您的回复
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-1-16 16:25:52
5#
您客气了,那本贴就先结贴了,有问题欢迎另开新帖交流。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部