如何使用DynamicJasper在没有组的情况下在JasperReports中显示页脚的每列总和?

时间:2018-04-03 06:25:00

标签: java jasper-reports dynamic-jasper

我尝试使用以下方法。

drb.addGlobalFooterVariable(totalAmount, DJCalculation.SUM);
drb.addGlobalFooterVariable(basicAmount, DJCalculation.SUM);

但它显示了最后一行(每列的值)的值,而不是页脚中每列的总和(如图所示)。

我错过了什么吗?

enter image description here

2 个答案:

答案 0 :(得分:1)

这是基于DynamicJasper官方网站上的示例的工作代码。

DynamicReportBuilder drb = new DynamicReportBuilder();
drb
        .setTitleStyle(titleStyle)
        .setTitle("Report with grand total")
        .setDetailHeight(15).setHeaderHeight(10)
        .setGrandTotalLegend("Grand Total")
        .setGrandTotalLegendStyle(footerStyle)
        .setDefaultStyles(titleStyle, null, headerStyle, detailStyle)
        .setPrintColumnNames(true);

AbstractColumn columnState = ColumnBuilder.getNew()
        .setColumnProperty("state", String.class.getName())
        .setTitle("State").setWidth(85)
        .build();

AbstractColumn columnBranch = ColumnBuilder.getNew()
        .setColumnProperty("branch", String.class.getName())
        .setTitle("Branch").setWidth(85)
        .setStyle(detailStyle).setHeaderStyle(headerStyle)
        .build();

AbstractColumn columnnProductLine = ColumnBuilder.getNew()
        .setColumnProperty("productLine", String.class.getName())
        .setTitle("Product Line").setWidth(85)
        .setStyle(detailStyle).setHeaderStyle(headerStyle)
        .build();

AbstractColumn columnnQuantity = ColumnBuilder.getNew()
        .setColumnProperty("quantity", Long.class.getName())
        .setTitle("Quantity").setWidth(80)
        .setStyle(rightAlignedStyle).setHeaderStyle(headerStyle)
        .build();

AbstractColumn columnAmount = ColumnBuilder.getNew()
        .setColumnProperty("amount", Float.class.getName())
        .setTitle("Amount").setWidth(90).setPattern("$ 0.00")
        .setStyle(rightAlignedStyle).setHeaderStyle(headerStyle)
        .build();

drb.addGlobalFooterVariable(columnAmount, DJCalculation.SUM, footerStyle);
drb.addGlobalFooterVariable(columnnQuantity, DJCalculation.SUM, footerStyle);

drb.addColumn(columnState);
drb.addColumn(columnBranch);
drb.addColumn(columnnProductLine);
drb.addColumn(columnnQuantity);
drb.addColumn(columnAmount);

drb.setUseFullPageWidth(true);

输出结果为:

Generated result at JasperViewer

答案 1 :(得分:0)

你好?这个问题可能比较老,但是为了将来的观众,我会回答。我在动态碧玉中遇到了同样的问题。我已经将column属性设置为string而不是double。对其进行更改以使其双重解决,现在总数可以了。这就是我的

            AbstractColumn ENGLISH = ColumnBuilder.getNew()
                .setColumnProperty("TOTAL%", String.class.getName())
                .setTitle("ENG").setWidth(new Integer(80))
                .setStyle(detailStyle1).setHeaderStyle(headerStyle)
                .build();

所以我改变了这个

.setColumnProperty("TOTAL%", String.class.getName())

对此

.setColumnProperty("TOTAL%", Double.class.getName())

我希望这会有所帮助。