如何获取总价格,整列(而不是每个条目)以及DynamicJaper报告中的组标题

时间:2019-02-18 20:12:37

标签: java dynamic-jasper

由于厌倦了Jaspersoft,我正在使用DynamicJasper库在JavaEE webapp中构建报表,似乎没有其他基于Java的报表创建工具是开源且不错的。如果你们中的任何一个更好的人,请赐教。

当前我有两个问题,我似乎无法将自动图文集框堆叠在页脚中(在页眉中可以),取决于.... erm ....,仅显示一两个。我对此没有答案。有人知道这样的事情是否可能吗?

.addAutoText(footerText)
.addAutoText(boxedText)
.addAutoText(xyText)

我无法获得整个列的总和,而我已经检查了几乎所有可能找到的内容,试图对它进行排序,但仍然失败。

invoiceText

正如您在这里看到的那样,我已经将每一行的总数放在每一行的总数之下(是!),但是我真的可以使用整列来进行总数。有人知道为什么会这样吗?

AbstractColumn costCol = ColumnBuilder.getNew()
                                           .setColumnProperty("cost", Double.class.getName())
                                           .setTitle("Cost")
                                           .setWidth(30)
                                           .setStyle(DynamicJasperStyle.columnStyle(DjValues.INVOICE_COLUMN_SIZE, DjValues.CENTRE, "£0.00"))
                                           .setHeaderStyle(DynamicJasperStyle.columnHeaderStyle(DjValues.INVOICE_COLUMN_SIZE, DjValues.CENTRE))
                                           .build();
GroupBuilder gBuilder = new GroupBuilder();
DJGroup sumGroup = gBuilder.setCriteriaColumn((PropertyColumn) costCol)
                                   .addFooterVariable(costCol,DJCalculation.SUM)
                                   .build();

        dr = frb.setGrandTotalLegend("total")
                .addColumn(descCol)
                .addColumn(qtyCol)
                .addColumn(costCol)
                .addGroup(sumGroup)
                .build();

        drb.addConcatenatedReport(dr, new ClassicLayoutManager(), "FakeInvoiceItem", DJConstants.DATA_SOURCE_ORIGIN_PARAMETER, DJConstants.DATA_SOURCE_TYPE_COLLECTION, false);

其中drb = DynamicReportBuilder,dr = DynamicReport和frb = FastReportBuilder。

我的样式方法如下;

 static public Style columnStyle(int font_weight, String orientation, String pattern)
 {
    Style columnStyle = new Style();
    columnStyle.setHorizontalAlign(HorizontalAlign.CENTER);
    columnStyle.setPaddingTop(8);
    columnStyle.setPaddingBottom(8);
    columnStyle.setFont(new Font(font_weight,"DejaVu Serif",false));

    if (orientation.equals(DjValues.CENTRE))
    {
        columnStyle.setHorizontalAlign(HorizontalAlign.CENTER);
    }
    else if (orientation.equals(DjValues.LEFT))
    {
        columnStyle.setHorizontalAlign(HorizontalAlign.LEFT);
    }
    else if(orientation.equals(DjValues.RIGHT))
    {
        columnStyle.setHorizontalAlign(HorizontalAlign.RIGHT);
    }

    if (!StringUtils.isNullOrEmpty(pattern))
    {
        columnStyle.setPattern(pattern);
    }

    return columnStyle;
}

0 个答案:

没有答案