使用java的子报表生成Jasper报告

kan*_*arp 14 java jasper-reports

我知道如何在没有任何子报表的情况下生成jasper报告.但是目前我的报告中有一个子报表,我想知道如何在java中编译该子报表?

Ale*_*x K 36

例如,您可以使用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);
Run Code Online (Sandbox Code Playgroud)

主报告的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>
Run Code Online (Sandbox Code Playgroud)

笔记

我提到了一个用于生成结果的旧API: JasperFillManager.fillReportToFile(JasperReport,String,Map,java.sql.Connection)

在使用JasperReports 6.x的情况下,最好使用导出器(net.sf.jasperreports.export.Exporter接口的具体实现,例如JRPdfExporter)来生成输出文件

可以在此处找到如何正确使用Exporter的示例

  • @Alex_K男人,我爱你,我的意思是,这很棒!;) (3认同)