Generate Jasper report with subreport from java

人盡茶涼 提交于 2019-12-28 02:39:24

问题


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?


回答1:


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.

The sample:

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);

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>

Notes

I mentioned an old API for generating result: JasperFillManager.fillReportToFile(JasperReport, String, Map, java.sql.Connection)

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

The example how to use Exporter right can be found here



来源:https://stackoverflow.com/questions/9785451/generate-jasper-report-with-subreport-from-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!