背景:使用java+birt生成报表。在查看器中生成报告,并允许用户选择将其导出为不同的格式(pdf、xls、word…)。
所有程序都在“布局”中,“母版页”中没有程序。有1个“数据集”。“布局”中的字段指的是此ds。“布局”中有组,按一个字段进行分组。在“组标题”中,我创建一个单元格用作页码页码:mypagenumber“。”mypagenumber”是我定义的一个字段,它将在组头中加1。
问题:当我使用第1个方法生成报表时,“mypagenumber”无法正确显示。因为组头只为每个组加载一次。它总是显示1。
问:据我所知,crystal report中有“重新启动组中的页码”。如何在birt中重新启动页面?我想在一个报表文件中显示不同组的数据,每个组的页码从1开始。
2条答案
按热度按时间bxjv4tth1#
您可以使用页面变量对birt报告执行此操作。例如:
添加2个页面变量。。。组\页面,组\名称。
添加1个报表变量。。。组\总\页。
在“出厂前报告”中添加脚本:
在ReportonPageEnd中添加脚本:
在母版页onrender脚本中添加以下脚本:
在表组标题oncreate事件中,添加以下脚本,将“country”替换为要分组的列的名称:
在母版页中,向页眉或页脚添加网格,并为组\页和组\总\页添加自动图文集变量。也可以为组名称添加page变量。
有关birt页面变量的更多信息,请查看以下链接:
https://books.google.ch/books?id=aijz4fyjoqkc&pg=pa85&lpg=pa85&dq=birt+change+autotext&source=bl&ots=k0ncmf2hrd&sig=cbor_otrw0b72szofs7lc_1mrz4&hl=en&sa=x&ei=zknavcnulylhsaxrmihocw&ved=0ceoq6aewbq#v=onepage&q=birt%20change%20autotext&f=false
https://www.youtube.com/watch?v=lw_k1qhy_gu
http://www.eclipse.org/birt/phoenix/project/notable2.5.php#jump_4
https://bugs.eclipse.org/bugs/show_bug.cgi?id=316173
http://www.eclipse.org/forums/index.php/t/575172/
a1o7rhls2#
唉,birt不支持这一点。
这可能不是你所希望的答案,但这是事实。这是birt远远落后于其他报表生成器工具的少数几个方面之一。
然而,取决于您如何将birt集成到您的环境中,我们在解决方案中成功使用的pdf导出的解决方法是可行的。这个想法是让birt根据分组生成pdf大纲。birt报告在reportcontext中创建关于它希望在何处以及如何显示页码的信息。birt生成pdf之后,一个定制的pdfpostprocessor使用pdf大纲和reportcontext中的信息,用itext添加页码。如果这项工作对你是可行的,请随时与我联系。