使用Jasper,我可以使用资源来加载报告。因此,要加载主报告,我使用类似以下内容的内容:
InputStream is = getClass().getResourceAsStream("/resources/report1.jrxml");
design = JRXmlLoader.load(is);
但是,如果report1.jrxml中有一个子报表,怎么说在/resources/sub.jrxml中呢?
最佳答案
我这样做是这样的:
jasperDesign = JRXmlLoader.load(rootpath + "/WEB-INF/templates/Report.jrxml");
jasperDesignSR = JRXmlLoader.load(rootpath + "/WEB-INF/templates/SubReport.jrxml");
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperReport jasperReportSR = JasperCompileManager.compileReport(jasperDesignSR);
parameters.put("SubReportParam", jasperReportSR);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
“SubReportParam”将是“JasperReport”类型的参数,作为您报表中的SubreportExpression。
在.jrxml中:
<parameter name="SubReportParam" class="net.sf.jasperreports.engine.JasperReport" isForPrompting="false"/>
我不知道您是否在报表设计中使用IReport。
右键单击子报表,您应该找到SubreportExpression。
参数是我传递给“fillReport”的 map
祝你好运。