由于厌倦了Jaspersoft,我正在使用DynamicJasper库在JavaEE webapp中构建报表,似乎没有其他基于Java的报表创建工具是开源且不错的。如果你们中的任何一个更好的人,请赐教。
当前我有两个问题,我似乎无法将自动图文集框堆叠在页脚中(在页眉中可以),取决于.... erm ....,仅显示一两个。我对此没有答案。有人知道这样的事情是否可能吗?
.addAutoText(footerText)
.addAutoText(boxedText)
.addAutoText(xyText)
我无法获得整个列的总和,而我已经检查了几乎所有可能找到的内容,试图对它进行排序,但仍然失败。
正如您在这里看到的那样,我已经将每一行的总数放在每一行的总数之下(是!),但是我真的可以使用整列来进行总数。有人知道为什么会这样吗?
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;
}