我知道如何在没有任何子报告的情况下生成jasper报告。但目前我的报告中有一个子报表,我想知道如何在java中编译该子报表?
发布于 2012-03-20 19:54:52
您可以像编译简单报表一样编译子报表-例如,在JasperCompileManager.compileReport(java.lang.String sourceFileName)方法的帮助下。
之后,您可以将编译后的子报表作为参数传递给主报表。
示例:
JasperReport jasperMasterReport = JasperCompileManager.compileReport(masterReportSource);
JasperReport jasperSubReport = JasperCompileManager.compileReport(subReportSource);
Map<String, Object> parameters = new HashMap()<String, Object>;
parameters.put("subreportParameter", jasperSubReport);
JasperFillManager.fillReportToFile(jasperMasterReport, parameters, outputFileName, connection);来自主报告的jrxml文件(示例)的代码片段:
<parameter name="subreportParameter" class="net.sf.jasperreports.engine.JasperReport"/>
...
<detail>
<band height="50">
...
<subreport>
<reportElement isPrintRepeatedValues="false" x="5" y="25" width="325" height="20" isRemoveLineWhenBlank="true" backcolor="#ffcc99"/>
<subreportParameter name="City">
<subreportParameterExpression><![CDATA[$F{City}]]></subreportParameterExpression>
</subreportParameter>
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
<returnValue subreportVariable="PriceSum" toVariable="ProductTotalPrice" calculation="Sum"/>
<subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA[$P{subreportParameter}]]></subreportExpression>
</subreport>备注
我提到了一个用于生成结果的旧API:。
如果使用JasperReports 6.x,最好使用导出器( 接口的具体实现,例如JRPdfExporter)来生成输出文件
如何使用导出器权限的示例可以在here中找到
https://stackoverflow.com/questions/9785451
复制相似问题