JasperReports如何在Excel中进行分页

时间:2011-12-13 23:12:01

标签: excel printing jasper-reports

我正在尝试将页码/符号放在每个页面的底部,列标题位于顶部,因此从Excel打印时,所有页面都会编号并显示。这不应该是一件大事,对吧?但不幸的是,无论我尝试什么方法,我都无法在页面底部获得页码和分页符 - 它们在其他任何地方,但在底部。我在页面页脚部分放置了“Page X of Y”,未选中Ignore Pagination,当我生成报表时,我在每4行数据后都有Page X或Y.我将页面高度扩展到Letter Landscape格式的标准高度的3-4倍,并且在18-20行数据之后改变了要打印的页脚 - 这不是一种可靠的调整方式。 此外,我尝试将Page Break with Print When表达式设置为每20行打印一次,但这仍然不准确,因为在第一页上由于报告标题我的数据行数较少 - 如果我将其调整为在第一页上更正 - 它将在下一页的中间某处打印。 我是否遗漏了设计中如何使用页面#s设置页脚的明显内容?任何帮助将不胜感激。

2 个答案:

答案 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中预览):

Result in MS Excel

答案 1 :(得分:0)

几年前我尝试了同样的方法但无法解决问题。如果两者之间没有发生剧烈的变化(如果提供的话,我会立即删除这个答案)那么你就输了。

对不起。