java - 从java生成带有子报告的Jasper报告

标签 java jasper-reports

我知道如何生成没有任何子报告的 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 接口(interface)的具体实现,例如JRPdfExporter)用于生成输出文件

如何使用Exporter权限的示例可以参见here

关于java - 从java生成带有子报告的Jasper报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61128670/

相关文章:

maven - 使用哪个版本的 iText 以便 JasperReports 和 Grails Rendering 插件都能工作

java - 如何在 Ubuntu 中将默认的 eclipse IDE 更改为新版本的 IDE?

JavaFX 和 FXML : assign ChangeListener to observable property

jasper-reports - 如何将 XY 线添加到条形图以创建具有另一个轴的多类型图表?

java - Jasper Reports 无法使用项目 jar 文件运行

java - JasperReport,显示和打印报告

java - 如何从 JSP 或 Java 代码在 JasperReport 中传递参数值?

java - Tomcat catalina 日志文件不包含任何数据

java - 迭代一个链表

java - android: Facebook SDK AsyncTask 错误