0

我使用的是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)and为 A 列和 B 列添加总计drb.addGlobalFooterVariable(columnB, DJCalculation.SUM)

但我无法按照上面解释的公式找到 columnC 的解决方案。

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

4

1 回答 1

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();
                }
            });
于 2014-08-13T14:23:05.433 回答