自动计算中引用自身单元格的值
需求描述
报表中某一列的数据首先是取自数据集某个字段的值,但如果数据集中某条记录在该字段没有值时,则需要显示一个自动计算后的值。
初步看来需求似乎并不复杂,无非是使用条件判断,若数据库有值则取该值;否则显示自动计算的值。我来来进一步看一下示例报表:
在C2单元格的自动计算中这样写:${C2}==”?${A2+B2}:${C2}
报表发布后我们发现报脚本错误,原因是自动计算中无法直接引用自身单元格,并且无法使用类似单元格中的value()函数。我们很快会想到复制一个C2到其他单元格,然后在C2中引用那个单元格就可以了,当然这是一种办法,但是对于数据量大的报表来说,增加单元格会影响效率。所以必须想办法在C2的自动计算中引用C2的值。
实现方法
由于自动计算中支持js函数,我们可以想办法得到C2的单元格ID,通过document对象获取其值。报表做一下修改,增加行号:
D2的自动计算表达式:document.getElementById(“report1_D”+${A2}).innerText==”?${B2+C2}:document.getElementById(“report1_D”+${A2}).innerText
我们看一下最后实现的报表展现结果: