我正在使用 DynamicJasper ver 4.0.2,并且我已经用 Excel 格式创建了报告。
该报告有三栏,比如说A,B和C. 在页脚中我想要总列A,即SUM(A)和B列,即SUM(B),而C列的总数=(SUM(B)/ SUM(A))* 100.
但是,我可以使用drb.addGlobalFooterVariable(columnA, DJCalculation.SUM)
和drb.addGlobalFooterVariable(columnB, DJCalculation.SUM)
为A列和B列添加总计。
但是我无法按照上面解释的公式找到columnC的解决方案。
我用谷歌搜索但我没有得到任何相关的帖子。请帮帮我。
答案 0 :(得分:1)
我在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();
}
});