web-dev-qa-db-ja.com

javaからサブレポートを含むJasperレポートを生成

サブレポートなしでジャスパーレポートを生成する方法を知っています。しかし、現在、レポートにサブレポートがあり、そのサブレポートをJavaでコンパイルする方法を知りたいのですが?

14
kandarp

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について言及しました:JasperFillManager.fillReportToFile(JasperReport、String、Map、Java.sql.Connection)

JasperReports 6.xを使用する場合は、エクスポーター(net。 sf.jasperreports.export.Exporterインターフェース、たとえばJRPdfExporter)出力ファイルを生成する

エクスポーター権限の使用例は以下にあります here

35
Alex K