避免在JRXML中重复列标题

时间:2011-09-08 11:02:53

标签: jasper-reports

如何避免在JRXML中重复列名?在使用JRXML和Jasper生成报告时,是否有任何属性可以避免在每个页面中使用列标题?

10 个答案:

答案 0 :(得分:17)

如果标题始终位于特定页面(例如第一页)上,则可以添加

<printWhenExpression><![CDATA[$V{PAGE_NUMBER}==1]]></printWhenExpression>

到乐队,这将使其仅在第1页上打印。PAGE_NUMBER是一个内置变量,在生成报告时自动递增。

答案 1 :(得分:16)

如果使用java填充报告,请将以下参数设置到java代码中:

parameters.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);

答案 2 :(得分:9)

在jasper报告标签中输入
    isIgnorePagination="true"

答案 3 :(得分:2)

另一种选择: http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JRParameter.html#IS_IGNORE_PAGINATION

“如果设置为true,将在一个长页面上生成报告。”

答案 4 :(得分:1)

  

使用JRXML和Jasper生成报告时是否有任何属性可以避免在每个页面中使用列标题?

您可以使用 isPrintInFirstWholeBand 属性,并将列标题移至Group Header频段(或Title频段(如果您还没有分组)。

答案 5 :(得分:1)

更简单的选择是选择用于标题的“表格标题”而不是“列标题”。

我也面临同样的问题,这个解决方案对我有用。

答案 6 :(得分:0)

创建一个虚拟组并使用Group Footer Band ..这对我来说很有用,因为已经使用了摘要带..

答案 7 :(得分:0)

我尝试过:

     params.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);

但是,我的页面很长,只有1/1,如果不将任何行分成两半就很难打印。

相反,我从iReport设计器中选择了第二种方法:

1-在表标题中创建新的空单元格。

2-通过逐一拖动,将单元格(标题单元格)从列标题移动到表格标题。

3-删除列标题中的空白单元格。

4-选择新的单元格背景,方法是从属性中选择“背景色”,或选择要定义样式的列(表),然后从属性中选择table 1_CH

enter image description here

答案 8 :(得分:0)

我会尽量避免使用列标题。由于某些原因,组标题为用户提供了更多选择和灵活性。 因此,即使我不在报表中使用组,我也会创建一个“常量组”,该常量组将常量表达式用作groupExpression,然后将该组的标题用作报表的列标题。

使用像true这样的常量表达式,该组就不会改变,因为它与数据集无关。而且由于它永远不会改变,所以它不仅不会自动打印两次,它还提供了选项,只需在JasperSoft studio中选中复选框,即可在每页上(其他选项中)重印(或将相应的属性添加到组标签)。

与停用分页或使用依赖页面的printWhenExpression相比,优点是:

  • 独立于标题第一次出现的页码(标题页或动态内容可能会将第一个外观推到第二页或第三页)
  • 允许分页(很不错,可以导出为带有页眉/页脚的PDF)
  • 提供比标准列标题更多的选项

缺点

  • 为报告增加了复杂性

以下是JRXML中非重复常量组头定义的示例:

<group name="columnHeaderGroup" isReprintHeaderOnEachPage="false">
    <groupExpression><![CDATA["a constant"]]></groupExpression>
    <groupHeader>
        <band height="20">
            <!-- any column header content like Static Texts or Text Fields -->
        </band>
    </groupHeader>
</group>

请注意,您也可以直接删除isReprintHeaderOnEachPage="false",因为这是默认行为。

答案 9 :(得分:0)

我们也可以使用下面的行来避免重复的columnHeader