使用java的子报表生成Jasper报告 [英] Generate Jasper report with subreport from java
问题描述
我知道如何在没有任何子报表的情况下生成jasper报告。但是目前我的报告中有一个子报告,我想知道如何在java中编译该子报告?
I know how to generate jasper report without any subreport. But currently I have a subreport in my report and I would like to know how can I compile that subreport in java?
推荐答案
你可以像简单的报告一样编译子报告 - 借助 JasperCompileManager.compileReport(java.lang.String sourceFileName)方法。
You can compile the subreport like the simple report - with help of JasperCompileManager.compileReport(java.lang.String sourceFileName) method, for example.
之后你可以传递编译子报告作为主报告的参数。
After that you can pass the compiled subreport as parameter to the master report.
样本:
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文件(样本)中的片段:
The snippet from the master report's jrxml file (sample):
<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:
JasperFillManager.fillReportToFile(JasperReport,String,Map,
java.sql.Connection)
如果使用 JasperReports 6.x ,最好是使用出口商(具体实施 net.sf.jasperreports .export.Exporter 接口,例如 JRPdfExporter )用于生成输出文件
In case using JasperReports 6.x it is better to use exporters (concrete implementation of net.sf.jasperreports.export.Exporter interface, for example JRPdfExporter) for generating output file
示例如何使用Exporter右边可以找到这里
The example how to use Exporter right can be found here
这篇关于使用java的子报表生成Jasper报告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!