JasperReports具有不同内容的多页报告
我正在评估JasperReport和iReport,要求是可以生成多页报告,其中每个页面都包含不同的报告。
例:
第1页包含客户的实际发票
第2页包含客户的发票清单
第3页包含按年份列出的发票金额
第4页只包含固定文本(比如操作员说明……)
是否可以创建这样一个独特的报告,而不是创建四个独立报告,然后合并pdfs。
非常感谢。
弗朗切斯科
我尝试了不同的东西。
我使用了Ireport 4.1.3,如果你右键单击detail1部分,你可以添加另一个细节部分。
添加一个beak页面就完成了。
希望它有所帮助:)问候
是的,您可以通过为主报表中的每个子报表创建dataSource和Parameters映射,
数据源包含将在报告中显示为表的列表
参数映射包含报表中文本字段的键和值
好消息是,您可以在每个参数图中包含所有页面的所有参数,然后在报表处理中,每个页面都会提取其参数并忘记其他页面:)
示例:
List
现在我们创建每个子报告并将其附加到主报告中:
Public void CreateReport(File reportFile, List> ParamList, List SourceList){ JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath()); Map parameters = paramList.get(0); JRDataSource datasource = datasourceList.get(0); jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, datasource); if(paramList.size()>1){ for(int i=1; i < paramList.size(); i++) { JasperPrint jasperPrint_next = JasperFillManager.fillReport(jasperReport, paramList.get(i), datasourceList.get(i)); List pages = jasperPrint_next.getPages(); for (int j = 0; j < pages.size(); j++) { JRPrintPage object = (JRPrintPage) pages.get(j); jasperPrint.addPage(object); } } } }
对的,这是可能的。 您可以将整个报表创建为四个单独的子报表的组合。 这将使他们的可重用性和关注点分离。
是的,您甚至可以包含与客户无关的报告“如果有意义”。
此外,为了使事情变得更有趣,在完成此报告后,您可以将其放在另一个父报告中,然后您将为多个客户获得相同的报告。