Jasper reports 贾斯珀报告显示;第X页,共Y页“;使用单个文本字段

Jasper reports 贾斯珀报告显示;第X页,共Y页“;使用单个文本字段,jasper-reports,Jasper Reports,我想创建一个文本字段,其中包含第X页,共Y页,而不按照通用解决方案将其拆分为两部分。我的文本字段包含“+$V{Page\u NUMBER}”的“Page”+$V{currentPage}+”,带有evaluationTime=auto 假设我有一份10页的报告。三个是标题栏,六个是细节栏,一个是摘要栏。我的结果显示“第0页,共10页”对于标题栏,正确计算了细节栏,然后是“第0页,共10页”“用于摘要波段 您如何确保变量在所有地方都被计算,而不仅仅是在细节栏上?关于当前页码,evaluationT

我想创建一个文本字段,其中包含
第X页,共Y页
,而不按照通用解决方案将其拆分为两部分。我的文本字段包含“+$V{Page\u NUMBER}”的
“Page”+$V{currentPage}+”
,带有
evaluationTime=auto

假设我有一份10页的报告。三个是标题栏,六个是细节栏,一个是摘要栏。我的结果显示
“第0页,共10页”
对于标题栏,正确计算了细节栏,然后是
“第0页,共10页”“
用于摘要波段


您如何确保变量在所有地方都被计算,而不仅仅是在细节栏上?

关于当前页码,
evaluationTime=now
$V{page\u number}
是您的答案


不幸的是,我不认为你能达到你想要的,因为有一个错误,当分割允许为详细乐队。否则,evaluationTime=now和“+$V{Page\u COUNT}”的
“Page”+$V{Page\u NUMBER}+”可能会起作用。

如您所述,常用方法使用两个单独的文本字段:

当前页码

$V{PAGE_NUMBER}
带评估时间:现在

总页数

$V{PAGE_NUMBER}
带评估时间:报告

Jaspersoft Studio,6+ 对于Jaspersoft Studio v6,或者如果第一个页码重复,请尝试使用
$V{MASTER\u CURRENT\u page}
$V{MASTER\u TOTAL\u page}
,计算时间为
MASTER

Jaspersoft工作室 对于Jaspersoft Studio的其他版本,请尝试后续小节中概述的步骤

创建变量 创建一个变量,如下所示:

  • 创建一个名为
    V\u CURRENT\u PAGE\u NUMBER的变量
  • 选择变量以打开其属性(如下所示)
  • 表达式设置为:
    1
  • 初始值表达式设置为:
    $V{PAGE_NUMBER}
    • 如果页码显示为
      0
      ,请使用
      $V{page\u number}+1
    • 如果页码始终显示Y的
      1
      ,请将表达式设置为
      $V{page_number}
      ,而不是初始值表达式,并将初始值表达式保留为空
  • 将重置类型设置为:
    Page
  • 这些设置如下图所示:

    表达式设置为
    1
    可防止其值为
    null
    。也就是说,如果页脚显示第null页(共4页),则可能表示尚未设置表达式

    变量被创建

    添加页脚 添加一个页脚带,如下所示:

  • 在大纲面板中选择报告
  • 选中带有页眉和页脚的摘要,以确保页脚显示在摘要页面上
  • 添加页脚带区
  • 添加页脚

    创建文本字段 创建一个文本字段,如下所示:

  • 将单个文本字段拖放到页脚上
  • 选择文本字段
  • 表达式设置为:
    msg(“第{0}页,共{1},$V{V_当前{u页码},$V{Page_页码})
  • 将评估时间设置为:
    Auto
  • 这些设置如下图所示:

    将创建单个文本字段

    预览报表 对于包含三页和摘要页的报告,预览报告时会显示:

    摘要页面显示:

    我试过了,但结果页码不正确:{1/7,1/7,2/7,3/7,4/7,5/7,6/7}

    对于JasperReports 6+,使用
    MASTER\u CURRENT\u PAGE
    MASTER\u TOTAL\u PAGE
    系统变量,并记住将文本字段求值时间设置为
    MASTER

    "Page: "+$V{MASTER_CURRENT_PAGE}+" of "+$V{MASTER_TOTAL_PAGES}
    
    
    

    请参阅:

    通过将评估时间用作报告,这应该会有所帮助

       <textField>
            <reportElement x="497" y="0" width="32" height="12" forecolor="#7E8083"
                               uuid="ef663cfd-4058-40bb-a6d9-de7f9a8164be"/> --update your elements here
            <textElement textAlignment="Right" verticalAlignment="Middle">
                <font fontName="SansSerif" size="7" pdfFontName="OpenSans-Regular.ttf"/>
            </textElement>
            <textFieldExpression>
                <![CDATA["Page " + $V{PAGE_NUMBER} + " of"]]>
            </textFieldExpression>
       </textField>
       <textField evaluationTime="Report">
            <reportElement x="529" y="0" width="7" height="12" forecolor="#7E8083"
                               uuid="ef663cfd-4058-40bb-a6d9-de7f9a8164be"/>  --update your elements here
            <textElement textAlignment="Right" verticalAlignment="Middle">
                <font fontName="SansSerif" size="7" pdfFontName="OpenSans-Regular.ttf"/>
                </textElement>
                <textFieldExpression>
                    <![CDATA[$V{PAGE_NUMBER}]]>
                </textFieldExpression>
       </textField>
    
    
    --在此更新您的元素
    --在此更新您的元素
    
    这是我的工作(与Dave的答案略有不同)

    *使用JasperSoft Studio

    然后放置一个包含以下表达式的文本字段:

    "Pág. " + $V{PAGE_NUMBER} +"/" + $V{V_CURRENT_PAGE_NUMBER}
    

    希望有此帮助!

    对于页面历史记录显示,如:页面:第1页,共5页

    使文本字段值如下所示,并将计算时间更改为
    Master

    "Page: "+$V{MASTER_CURRENT_PAGE}+" of "+$V{MASTER_TOTAL_PAGES}
    
    资料来源:

                <textField evaluationTime="Master">
                    <reportElement x="224" y="0" width="186" height="15" uuid="6641bb8b-9f48-4832-942b-8b04220030e6">
                        <property name="com.jaspersoft.studio.unit.height" value="px"/>
                    </reportElement>
                    <textElement verticalAlignment="Top">
                        <font size="8"/>
                    </textElement>
                    <textFieldExpression><![CDATA["Page: "+$V{MASTER_CURRENT_PAGE}+" of "+$V{MASTER_TOTAL_PAGES}]]></textFieldExpression>
                </textField>
    

    如果您想查看报告页脚右侧的第1页(共5页),请使用ireport或jasper报告调色板工具(第X页,共Y页)即可

    如果要查看报告页脚左侧的第1页(共5页),请使用ireport。

    请遵循以下步骤

  • 像这样创建函数变量
  • 请选择一个文本字段

    “+$V{Page_NU NUMBER}”的“+$V{Page_NUMBER}+”页


  • $V{PAGE_NUMBER}
    包含当前页码,您需要的是
    $V{NumberOfPages}
    ,因此您可以在一个文本框中使用它,并使用
    EvaluationTime:Now
    。否则您需要像@KCD这样的两个文本框解决方案,您的JasperReport是否有${numberpages}变量?我似乎在这里看不到它。我尝试了这里描述的所有解决方案,但这一个是唯一有效的解决方案