簡體   English   中英

從java生成帶有子報告的Jasper報告

[英]Generate Jasper report with subreport from java

我知道如何在沒有任何子報告的情況下生成 jasper 報告。 但是目前我的報告中有一個子報告,我想知道如何在 Java 中編譯該子報告?

您可以像簡單的報告一樣編譯子報告 - 例如,在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 )來生成輸出文件

可以在此處找到如何使用 Exporter 權限的示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM