Generowanie raportu Jasper z podpreportem z Javy

Wiem jak wygenerować raport Jaspera bez żadnych podpreportów. Ale obecnie mam podpreport w moim raporcie i chciałbym wiedzieć, jak Mogę skompilować ten podpreport w Javie?

Author: kandarp, 2012-03-20

1 answers

Możesz skompilować podpreport jak prosty raport-przy pomocy JasperCompileManager.compileReport(java.lang.String sourceFileName) metoda, na przykład.

Następnie możesz przekazać skompilowany podreport jako parametr do raportu głównego.

Próbka:

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

Fragment z pliku JRXML raportu głównego (przykład):

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

Uwagi

Wspomniałem o starym API do generowania wynik: JasperFillManager.fillReportToFile( JasperReport, String, Map, java.sql.Połączenie)

W przypadku użycia JasperReports 6.x lepiej jest użyć eksporterów (konkretna implementacja netto.sf.jasperreports.eksport.Eksporter interfejs, na przykład JRPdfExporter ) do generowania pliku wyjściowego

Przykład użycia prawa eksportera można znaleźć tutaj

 43
Author: Alex K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-17 19:26:57