我使用的是DynamicJasper版本4.0.2,并且我已经创建了Excel格式的报告。
该报告包含三列,例如 A、B 和 C。
在页脚中,我想要 A 列的总计,即 SUM(A) 和 B 列,即 SUM(B),而 C 列的总计=(SUM(B)/SUM(A))*100。
但是,我可以使用 drb.addGlobalFooterVariable(columnA, DJCalculation.SUM)
添加 A 列和 B 列的总计。和drb.addGlobalFooterVariable(columnB, DJCalculation.SUM)
.
但是我无法按照上面解释的公式找到 C 列的解。
我用谷歌搜索,但没有得到任何相关的帖子。请帮助我。
最佳答案
我通过使用 Dynamic Jasper 中的 CustomExpression 类得到了解决方案。下面是一个示例,
private AbstractColumn COLUMN_C;
DynamicReportBuilder drb = new DynamicReportBuilder();
COLUMN_C = ColumnBuilder.getNew().setColumnProperty("columnC",Double.class.getName()).setTitle("C").setHeaderStyle(headerStyle).setFixedWidth(false).setStyle(detailCurrencyStyle).setPattern("###0.00;-###0.00").build();
drb.addGlobalFooterVariable(COLUMN_C, new CustomExpression() {
@Override
public Object evaluate(Map fields, Map variables, Map parameters) {
double totalOfColumnC = 0.00;
totalOfColumnC = ( totalOfColumnB/ totalOfColumnA) * 100;
return totalOfColumnC;
}
@Override
public String getClassName() {
return Double.class.getName();
}
});
关于java - 使用 Excel 报告中的 DynamicJasper 在列页脚中添加自定义计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24450260/