我正在尝试将页码/符号放在每个页面的底部,列标题位于顶部,因此从Excel打印时,所有页面都会编号并显示。这不应该是一件大事,对吧?但不幸的是,无论我尝试什么方法,我都无法在页面底部获得页码和分页符 - 它们在其他任何地方,但在底部。我在页面页脚部分放置了“Page X of Y”,未选中Ignore Pagination,当我生成报表时,我在每4行数据后都有Page X或Y.我将页面高度扩展到Letter Landscape格式的标准高度的3-4倍,并且在18-20行数据之后改变了要打印的页脚 - 这不是一种可靠的调整方式。 此外,我尝试将Page Break with Print When表达式设置为每20行打印一次,但这仍然不准确,因为在第一页上由于报告标题我的数据行数较少 - 如果我将其调整为在第一页上更正 - 它将在下一页的中间某处打印。 我是否遗漏了设计中如何使用页面#s设置页脚的明显内容?任何帮助将不胜感激。
答案 0 :(得分:2)
我已经借助net.sf.jasperreports.export.xls.fit.height参数解决了这个问题。
我设置报告的高度和 net.sf.jasperreports.export.xls.fit.height 报告的属性具有相同的值。
样本:
<jasperReport ... pageWidth="595" pageHeight="800" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
...
<parameter name="net.sf.jasperreports.export.xls.fit.height" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA[800]]></defaultValueExpression>
</parameter>
...
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{field1}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="0" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{field2}]]></textFieldExpression>
</textField>
</band>
</detail>
<pageFooter>
<band height="20" splitType="Stretch">
<textField>
<reportElement x="433" y="0" width="80" height="20"/>
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement x="513" y="0" width="40" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
</band>
</pageFooter>
</jasperReport>
结果(在MS Excel中预览):
答案 1 :(得分:0)
几年前我尝试了同样的方法但无法解决问题。如果两者之间没有发生剧烈的变化(如果提供的话,我会立即删除这个答案)那么你就输了。
对不起。