在Excel报表中使用DynamicJasper在列页脚中添加自定义计算

时间:2014-06-27 11:03:46

标签: java jasper-reports export-to-excel dynamic-jasper

我正在使用 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的解决方案。

我用谷歌搜索但我没有得到任何相关的帖子。请帮帮我。

1 个答案:

答案 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();
                }
            });