好吧,我无法通过 Google 找到问题的答案,所以...
目前我正在使用 JasperReports 和 DynamicJasper 来构建我的报告并打印它们。当我仅使用单个 jasper 文件或 jrxml 文件时,一切正常。如果我需要合并报告,我还有一段代码可以将所有 JasperPrint 文件合并为一个。然而,这并不是真正的最佳选择......
我可以使用一个 .jasper 或 .jrxml 文件作为主报告(它有一个页眉、一个页脚和一个空的详细信息带)并用 1-n 个子报告填充其详细信息带(当前在 .jasper 或.jxrml)?
目前,只有我想要的子报表之一使用数据源(表模型),其他想要的子报表从参数获取数据。
我找到了几种不同的方法来做某事,最终可能会得到我想要的结果,但到目前为止还没有成功......我需要哪些构建者/经理/什么?因为找不到有关不同类、方法及其参数的足够信息而感到有点沮丧。他们为什么在那里以及需要什么。例子不足以解释......
我是否应该使用DynamicReportBuilder为DynamicJasperHelper构建DynamicReport,它生成JasperReport,而JasperReport又用JasperFillManager.fillReport方法填充?
最佳答案
将所有子报告放在一个主报告中,并使用printwhen表达式
来提高可见性。
下面是子报表代码。
<subreport>
<reportElement uuid="9f36c3cb-7e29-4040-a14e-6a91775e89e4" x="0" y="35" width="555" height="47">
<printWhenExpression><![CDATA[$P{disp} == 1]]></printWhenExpression>
</reportElement>
<!-- Other Element -->
</subreport>
注意上面代码中的以下行。
<printWhenExpression><![CDATA[$P{disp} == 1]]></printWhenExpression>
这意味着当$P{disp}.intValue() == 1
时应包含整个子报告。
这里的 $P{disp}
是您必须传递给报表才能使用 printWhenExpression
的参数。
参数或者不是必需的,您也可以使用字段
。条件取决于您的要求。
注意:
您可以对所有子报表采用类似的方法。
关于java - 在运行时将子报表添加到主报表(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26609508/