iReport(JasperReports)额外的行问题

时间:2011-12-02 09:18:30

标签: excel jasper-reports ireport

当我从数据库导入数据并在Excel工作表中格式化报表时,我在数据之间得到一个额外的空行。

编辑(来自评论的说明):Excel中的输出显示记录之间的额外空行和字段之间的额外空白列。

2 个答案:

答案 0 :(得分:9)

  • net.sf.jasperreports.export.xls.remove.empty.space.between.columns net.sf.jasperreports.export.xls.remove.empty.space.between.rows 属性添加到报告模板。

net.sf.jasperreports.export.xls.remove.empty.space.between.columns - 指定是否应移除空间隔列。

net.sf.jasperreports.export.xls.remove.empty.space.between.rows - 指定是否应移除空间隔行。

样本:

<jasperReport ...>
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <property name="net.sf.jasperreports.export.xls.remove.empty.space.between.columns" value="true"/>
    <property name="net.sf.jasperreports.export.xls.remove.empty.space.between.rows" value="true"/>

有关配置属性的信息为here

  • 您可以为 textField 元素设置 isRemoveLineWhenBlank isBlankWhenNull 以隐藏空白行。

示例如果当前 textField 为空,如何删除整行:

<textField isBlankWhenNull="true">
    <reportElement x="0" y="0" width="100" height="20" isRemoveLineWhenBlank="true"/>
    <textElement/>
    <textFieldExpression><![CDATA[$F{field}]]></textFieldExpression>
</textField>
  • 另一个假设是更改 Band 中所有 textField (或/和 staticText )元素的高度。

如果这个设计:

design with a space between textField and the band's boundary

任意两行之间都有空格。

如果此设计( textField 高度等于 Band的高度): the textfield height is equal to the band's height

每一行都将完全位于另一行之下。

答案 1 :(得分:3)

Alex K在11月2日的回答中陈述的每件事都是正确的。但其他一些设置可能会有所帮助。当报告文本拉伸细节带时,这些设置会有所帮助。

在细节带集中的每个字段:

positionType = “浮动”

stretchType =“RelativeToTallestObject”

示例:

<detail>
    <band height="20" splitType="Prevent">
        <textField isStretchWithOverflow="true" isBlankWhenNull="true">
            <reportElement positionType="Float" stretchType="RelativeToTallestObject" mode="Transparent" x="372" y="0" width="100" height="20"/>
            <textElement/>
            <textFieldExpression class="java.lang.String"><![CDATA[$F{your column name}]]></textFieldExpression>
        </textField>

这将强制所有字段为一个高度。 float设置告诉字段最小化前一行和下一行之间的距离。 RelativeToTallestObject设置告诉band中的所有字段与最高字段的高度相同。这两个设置有助于消除在Excel中显示为不需要的单元格的“空白空间”。