当我从数据库导入数据并在Excel工作表中格式化报表时,我在数据之间得到一个额外的空行。
编辑(来自评论的说明):Excel中的输出显示记录之间的额外空行和字段之间的额外空白列。
答案 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 为空,如何删除整行:
<textField isBlankWhenNull="true">
<reportElement x="0" y="0" width="100" height="20" isRemoveLineWhenBlank="true"/>
<textElement/>
<textFieldExpression><![CDATA[$F{field}]]></textFieldExpression>
</textField>
如果这个设计:
任意两行之间都有空格。
如果此设计( textField 高度等于 Band的高度):
每一行都将完全位于另一行之下。
答案 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中显示为不需要的单元格的“空白空间”。