gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:30:39 25 4
gpt4 key购买 nike

我知道如何生成没有任何子报告的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com