【问题标题】:Adding subreports to master report at runtime (java)在运行时将子报表添加到主报表(java)
【发布时间】:2014-12-23 22:14:59
【问题描述】:

好的,我在谷歌上找不到我的问题的答案,所以......

目前我正在使用 JasperReports 和 DynamicJasper 来构建我的报告并打印它们。当我只使用单个 jasper 文件或 jrxml 文件时,一切正常。如果我需要合并报告,我还有一段代码可以将所有 JasperPrint 文件合并为一个。但是,这并不是真正的最佳选择...

我可以使用一个 .jasper 或 .jrxml 文件作为主报表(它有一个页眉、一个页脚和一个空的详细信息带)并用 1-n 个子报表填充它的详细信息带(目前在 .jasper 或.jxrml)?

目前只有一个我想要的子报表使用数据源(tablemodel),其他想要的子报表从参数中获取数据。

我已经找到了几种不同的方法来做某事,这些方法最终可能会达到我想要的结果,但到目前为止还没有成功...哪些建设者/经理/我需要什么?有点沮丧,因为找不到有关不同类、方法及其参数的足够信息。他们为什么在那里以及需要什么。举例说明不够……

我是否应该使用 DynamicReportBuilder 为 DynamicJasperHelper 构建 DynamicReport 生成 JasperReport 又用 JasperFillManager.fillReport 方法填充?

【问题讨论】:

  • 如果你使用子报表,子报表会有不同的设计还是相同的设计但数据不同?
  • 有些子报表设计不同,有些子报表设计相同但内容不同。
  • 同一个设计子报表是没有问题的,但是不同的设计需要创建不同的子报表,并在运行时hook。
  • 最简单的子报表只有一个文本字段,大多数有图像和/或多个文本字段,一个子报表有一个表格。用户选择他/她想要打印的“产品”,然后我需要将所有“产品”子报表合并为一个。目前,我可以将所有“产品”创建为 JasperPrint 对象,然后将它们合并到一个 JasperPrint。不幸的是,会有太多分页符,因为每个 JasperPrint 从一个新页面开始,而某些“产品”只有一行文本。
  • 我不介意创建多个设计。我已经有了它们。问题是如何在运行时组合它们...

标签: java jasper-reports subreport dynamic-jasper


【解决方案1】:

将所有子报告放在一个主报告中,并使用print when expression 进行查看。 说下面是子报表代码。

<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 的参数。

参数与否,也可以使用field。条件根据您的要求而定。

Note :您可以对所有子报表使用类似的方法。

【讨论】:

  • 谢谢!我终于让它工作了。子报表没有显示,因为我没有向它发送 JREmptyDataSource ......虽然,这种解决方案需要大量工作,可以以更通用的方式完成。主要问题是使用一个表碧玉文件,其中表可能有不同的列。 JasperReports 可以有一个可以提供不同列数据的表吗?
  • 想给我一个示例代码或解释我如何在运行时修改 .jasper -file 的表组件的列?
  • 组件和列会一直存在,只是会根据&lt;printWhenExpression&gt;显示。例如,如果您有 5 列并且想要显示前两列,请使用您将传递给报告的参数将后三列的 &lt;printWhenExpression&gt; 设置为 false。
  • 好的,谢谢!这个添加所有然后只显示它的一部分听起来有点hacky的解决方案,但我想我可以忍受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
相关资源
最近更新 更多