【问题标题】:Jasper single page reportJasper 单页报告
【发布时间】:2019-01-16 21:25:38
【问题描述】:

在我的数据集中,我有多个记录,比如 23 条。我想逐行打印它们,每 23 行一页。目前,我的报告有 23 页,每页包含一条记录,这是我不想要的 - 我希望一页中有 23 行。

【问题讨论】:

  • 您是否将 Print When 表达式 PAGE_COUNT 设置为任何值?
  • 不,我没有用过任何东西,我知道 detail band 将每条记录打印在单独的页面上,而 Title 只打印第一条记录,这不适合我。我知道我可以使用表格(我想要从记录中获得的每个字段一个表格),但我相信它必须是更有效的方式来做到这一点......

标签: jasper-reports


【解决方案1】:

如果您使用的是 iReports,那么

在详细信息带的末尾放置一个分页符,并在 pageBreak 的属性中,将属性窗格中的 printWhen 表达式编辑为

new java.lang.Boolean((int)($V{REPORT_COUNT}.intValue())%23==0)

否则,如果直接编辑 jrxml 文件,则将其放在 <band> 标记之后 <details> 标记下 -

<break>
<reportElement x="0" y="23" width="100" height="1">
    <printWhenExpression><![CDATA[new java.lang.Boolean((int)($V{REPORT_COUNT}.intValue())%23==0)]]></printWhenExpression>
</reportElement>

希望这会给您带来预期的输出。

【讨论】:

  • Ty 为您解答,但我收到此错误:.... 原因:org.codehaus.groovy.runtime.typehandling.GroovyCastException:无法使用类“java.lang”强制转换对象“假” .Boolean' to class 'int' .... 有什么提示吗?
  • 您需要进一步调试您的代码。这似乎与 jasper 无关。
  • 当我用 boolean 代替 int:new java.lang.Boolean((boolean)($V{REPORT_COUNT}.intValue())%23==0) 我没有收到任何消息,但是它也不起作用-它和以前一样,23页而不是1页......
【解决方案2】:

您无需执行任何特殊操作即可获得所需内容,Jasper Reports 会默认执行您所描述的内容。您的布局可能有很多问题,例如细节带太高、一些分页符,或者保持在一起设置在一个组上。

我认为您最好花一些时间使用本教程 (http://youtu.be/103MUpnyrvk) 等教程创建一个新的简单布局,并希望您能看到修复/重新创建报告所需的操作。

【讨论】:

    【解决方案3】:

    您可以做的是设计细节带,使其以您希望的方式显示一行。

    接下来确保详细信息带包含这些字段。文本字段元素上方或下方没有空格。

    接下来设置您的报告查询,以便从您的数据库中提取所请求的数据。

    将为数据集中的每个元素重复详细信息带,从而将所有记录显示在彼此下方而没有空格。

    【讨论】:

      【解决方案4】:

      增加Detail 带的高度,直到它是pageHeight 其他部分和边距大小的1/23。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-29
        • 2016-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多