如何在JXLS Excel函数中使用三元运算符及异常返回问题求助
问题根因
你看到的[l@5c6f3524是Java数组对象的默认toString返回值,核心问题出在表达式里的[S3/M3*100]写法:JXLS默认使用的JEXL表达式引擎中,方括号[]会被识别为数组声明语法,你的写法会被解析成仅包含一个元素的数组对象,输出时直接调用数组的toString方法就会出现这类异常结果。
解决方案
分两种场景处理:
- 场景1:需要在模板渲染阶段直接计算出数值结果,不需要保留为Excel公式
直接去掉表达式外层的方括号即可:
注意:该写法要求<jx:forEach var="data" items="${dataList}"> ${data.TEST_COL18 != null ? S3/M3*100 : ""} </jx:forEach>S3、M3是你已经传入JXLS上下文的变量,能在渲染阶段直接拿到对应数值。 - 场景2:需要将计算逻辑保留为Excel公式,打开Excel文件时由Excel自动计算
按JXLS的公式规范添加$前缀即可:
注意:如果公式需要随循环行动态调整单元格引用,可以配合<jx:forEach var="data" items="${dataList}"> ${data.TEST_COL18 != null ? "$[S3/M3*100]" : ""} </jx:forEach><jx:forEach>的varStatus属性获取当前行号,拼接生成对应行的单元格引用。
内容的提问来源于stack exchange,提问作者kukuku
相关产品推荐
相关产品推荐

