能否在iReport属性表达式中引用文本字段键以复用Excel公式?
解决iReport 4.6中XLS小计公式批量优化的问题
可行方案:利用文本字段的「描述」属性复用列标识
不用手动修改每个公式里的列字母,通过给文本字段设置描述属性,在公式中自动引用该值,步骤如下:
设置文本字段的描述属性
选中组页脚的小计文本字段,在属性面板找到「描述(Description)」项,输入对应列的字母(比如F、G、H等)。修改XLS公式表达式
将原公式中的固定列字母替换为对描述属性的引用,修改后的net.sf.jasperreports.export.xls.formula属性值为:"=SUBTOTAL(9," + $P{THIS}.getDescription() + "4:" + $P{THIS}.getDescription() + "" + ($V{PERIOD_COUNT} + 3) + ")"公式会自动读取当前文本字段描述里的列字母,无需手动修改公式内容。
批量复用
复制已设置好的文本字段到其他列,仅需修改新文本字段的「描述」属性为对应列字母即可,公式会自动适配,大幅减少重复操作。
补充方案:自定义属性替代
如果偏好使用自定义属性而非描述,也可以给文本字段添加自定义属性(比如命名为COLUMN_ID),值设为列字母,然后将公式改为:
"=SUBTOTAL(9," + $P{REPORT_PARAMETERS_MAP}.get("COLUMN_ID") + "4:" + $P{REPORT_PARAMETERS_MAP}.get("COLUMN_ID") + "" + ($V{PERIOD_COUNT} + 3) + ")"
不过「描述」属性是iReport原生自带的,操作更简便,推荐优先使用。
内容的提问来源于stack exchange,提问作者Terry Foster




