【问题标题】:JasperReports How to do pagination in ExcelJasperReports 如何在 Excel 中进行分页
【发布时间】:2012-01-19 19:39:09
【问题描述】:

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

【问题讨论】:

    标签: excel printing jasper-reports


    【解决方案1】:

    我已经在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 中预览):

    【讨论】:

    • 它没有改变任何东西。顺便说一句,您在其中指定要查找字符串的高度值,因此应将其声明为: 您正在运行哪个 Jasper Reports 版本?我升级到 3.7.5 以使用此属性,但仍然没有运气。
    【解决方案2】:

    几年前我尝试过同样的方法,但无法解决。如果两者之间没有发生剧烈变化(如果提供了一个答案,我会立即删除此答案),那么您就迷路了。

    对不起。

    【讨论】:

    • @sstoynov 请说明您所说的“最新”是什么意思(因为在 6 个月内将不再相同)。不,我没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 2019-04-23
    • 2019-08-17
    • 2017-10-03
    • 2017-01-20
    • 2012-06-04
    • 2014-05-08
    相关资源
    最近更新 更多