使用java的子报表生成Jasper报告 [英] Generate Jasper report with subreport from java

查看:103
本文介绍了使用java的子报表生成Jasper报告的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道如何在没有任何子报表的情况下生成jasper报告。但是目前我的报告中有一个子报告,我想知道如何在java中编译该子报告?

I know how to generate jasper report without any subreport. But currently I have a subreport in my report and I would like to know how can I compile that subreport in java?

推荐答案

你可以像简单的报告一样编译子报告 - 借助 JasperCompileManager.compileReport(java.lang.String sourceFileName)方法。

You can compile the subreport like the simple report - with help of JasperCompileManager.compileReport(java.lang.String sourceFileName) method, for example.

之后你可以传递编译子报告作为主报告的参数。

After that you can pass the compiled subreport as parameter to the master report.

样本:

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文件(样本)中的片段:

The snippet from the master report's jrxml file (sample):

<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 )用于生成输出文件

In case using JasperReports 6.x it is better to use exporters (concrete implementation of net.sf.jasperreports.export.Exporter interface, for example JRPdfExporter) for generating output file

示例如何使用Exporter右边可以找到这里

The example how to use Exporter right can be found here

这篇关于使用java的子报表生成Jasper报告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆