我有两个表格要打印在同一页上。这些表的数据将从自定义数据源的地图中提供。我需要实施它。我用谷歌搜索来实现这个任务。
当时我遇到了子报告的概念,但我没有得到太多关于如何实现子报告的信息。
我知道如何创建子报告。但我不知道如何使用自定义数据源填充子报告。这就是我的问题。请帮助我实现这一目标。
注意:我尝试实现子报告,但出现错误。这是我用于编译子报表的代码:
JasperPrint print = new JasperPrint();
JRPdfExporter exporter = new JRPdfExporter();
JasperDesign design, design1;
JasperReport report, report1;
JasperReport jasperReport;
JasperDesign jd1;
jd1 = JRXmlLoader.load("D:\\sub_report1.jrxml");
jasperReport = JasperCompileManager.compileReport(jd1);
Map parameters = new HashMap();
parameters.put("ReportTitle", "Table Report");
parameters.put("DataFile", "TableSource.java");
parameters.put("Subreport_1", jasperReport);
design = JRXmlLoader.load("D:\\sub_report2.jrxml");
report = JasperCompileManager.compileReport(design);
parameters.put("Subreport_2", report);
design1 = JRXmlLoader.load("D:\\master_report.jrxml");
report1 = JasperCompileManager.compileReport(design1);
JasperFillManager.fillReportToFile(report1, "D:\\master_report.jrprint", parameters, new TableDataSource());
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "D:K\\Report.pdf");
exporter.exportReport();
JasperViewer.viewReport(print);
这里我整理了subreport1
& subreport2
单独并将它们添加为地图中的参数。然后我在通过 masterreports 填写时遇到错误。请帮我编写报告。
编译器错误的堆栈跟踪:
线程“main”中出现异常 net.sf.jasperreports.engine.JRRuntimeException:未知的打印顺序 0。
在 net.sf.jasperreports.engine.fill.JRFillSubreport.initSubreportFiller(来源未知)
在 net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(来源未知)
在 net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(来源未知)
在 net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(来源未知)
在 net.sf.jasperreports.engine.fill.JRFillBand.evaluate(来源未知)
在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(来源未知)
在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(来源未知)
在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(来源未知)
在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(来源未知)
在 net.sf.jasperreports.engine.fill.JRBaseFiller.fill(来源未知)
在 net.sf.jasperreports.engine.fill.JRBaseFiller.fill(来源未知)
在 net.sf.jasperreports.engine.fill.JRFiller.fillReport(来源未知)
在 net.sf.jasperreports.engine.JasperFillManager.fillReport(来源未知)
在 net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(来源未知)
在 ReportTableCompiler.main(ReportTableCompiler.java:53)