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

标签 java jasper-reports

我知道如何在没有任何子报告的情况下生成碧 Jade 报告。但是目前我的报表中有一个子报表,我想知道如何用 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)用于生成输出文件

可以找到如何使用导出器权限的示例here

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

相关文章:

java - 创建多维数组的副本

java - hibernate : not-null property references a null or transient value

jasper-reports - 如果表达式在 iReport 中有效,如何删除表中的行

MYSQL SUM() 总分

jasper-reports - jasper 使用 style-Barcode 报告条形码

java - JSF ajax 更新行为

java - 静态和动态圆之间的碰撞响应

java - jsp jdbc数据访问层设计

java - 碧 Jade 报告 : filling a report throws an exception "Class not found when loading object from file"

jasper-reports - 在 jasperreports 中添加表格边框