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}变量?我似乎在这里看不到它。我尝试了这里描述的所有解决方案,但这一个是唯一有效的解决方案