Skip to content

与业务结合

本小节中我们将介绍如何在业务页面中展示报表、导出报表文件、引用报表内容等操作

报表相关 URL

在配置好 Luck-Report 项目后,就可以运行项目,打开 Luck-Report 的基于网页的报表设计器,它的地址如下:

Luck-Report 报表设计器 URL
http://localhost:8081/luck-report/report/designer

在报表设计器中,设计好报表后,点击左上角的预览图标就可以在线预览报表(预览报表有两种方式,一种是不分页预览报表;一种是分页预览报表,如果报表数据量较大,我们推荐预览时采用分页方式,这样可以减轻浏览器渲染压力);预览报表的 URL 如下:

Luck-Report 预览报表 URL
http://localhost:8081/luck-report/report/preview?reportPath=报表路径&mode=preview

在上面的 URL 中有个名为 "reportPath" 的参数,它是用来指定当前要预览的报表模版地址 另外一个 "mode" 参数,它是用来指定当前报表的查看模式,默认值为 "preview",表示预览模式。当 mode=preview 时,系统会使用预览模式加载报表,包括显示工具栏等预览相关功能。

预览正在设计中的报表注意事项
在预览正在设计器中设计的报表时,Luck-Report 会在点击设计器工具栏预览图标时,将设计中的报表模版信息提交到服务器,存放于当前用户的 session 中(用户会话中),所以一旦用户 session 失效,如果我们再次直接预览当前类型报表时,会看到报表数据已过期的错误提示,表示存放于 session 中的正在设计器中设计的报表模版已经失效,不能预览。
当然,如果 URL 中不存在 mode 参数,则不存在这种问题,只有正在设计器中设计的报表模版在预览中采用了这种机制,这点需要注意。

如果预览的不是正在设计器中设计的模版,那么只需要给出具体的报表路径即可,需要注意的是,这里的报表路径要以其 ReportProvider 中要求的前缀开始,比如 http://localhost:8081/luck-report/report/preview?reportPath=file:test.ureport.xml 等。

报表预览后,通过预览页面上方工具栏中一排按钮,可以实现报表的 PDF 打印、导出 Word、Excel、PDF 等,对应的相关 URL 如下:

URL说明
http://localhost:8050/report/pdf/show?reportPath=报表路径这个 URL 将向浏览器写入一个 PDF 文件流,在 Chrome、Firefox、Edge 这些
 浏览器中将会直接在线显示 PDF 文件内容,这样可以实现在线浏览 PDF 并打印输出。
http://localhost:8050/report/word/build?reportPath=报表路径导出对应报表的 Word 文件
http://localhost:8050/report/excel/build?reportPath=报表路径不分页导出对应报表的 Excel 文件
http://localhost:8050/report/excel/paging?reportPath=报表路径分页导出对应报表的 Excel 文件
http://localhost:8050/report/excel/sheet?reportPath=报表路径分页分Sheet 导出对应报表的 Excel 文件
http://localhost:8050/report/pdf?reportPath=报表路径导出对应报表的 PDF 文件

关于报表参数
上面的这些 URL 在使用时,如果需要向报表传入参数,可以将这些参数直接放在 URL 后面使用,如:http://localhost:8050/report/word/build?reportPath=file:test.ureport.xml&deptId=D11&age=50,将报表 file:test.ureport.xml 导出成 word 时,传入两个参数,分别是:deptId=D11 以及 age=50

上述的这些 URL 后面除了可以用reportPath 参数来指定要预览的报表路径外,还可以通过_i 参数来指定当前要预览报表页码,也就是说如果上述这些 URL 后面没有_i 参数,将会显示整个报表,如果有则显示_i 参数指定页码对应的报表,比如 URL 后面跟_i=2,表示预览报表分页后第 2 页内容。

http://localhost:8081/luck-report/report/preview 对应的 HTML 报表预览页面中,默认页面上部工具栏会显示一排按钮,用于实现打印和导出其它格式报表。

在上面的工具栏中,一共有 9 个按钮,分别用于实现打印及导出其它格式报表, 在实际使用中,如果希望这个工具栏只出现其中某些个工具的话,我们可以参数在 URL 后面添加_t 参数来实现,_t 参数如果不指定,那么会显示所有的按钮,否则只显示_t 参数指定的按钮。上面这些按钮的显示分别对应参数值:1、2、3、4、5、6、7、8、9,多个参数间用 "," 分隔,下面是一些示例:

示例说明
_t=1,3显示第一个和第三个按钮
_t=1,2,5显示第一个,第二个和第五个按钮
_t=1,2,3,4,5显示第一个,第二个,第三个,第四个和第五个按钮

如果我们不希望显示 HTML 预览页面的工具栏,那么设置_t=0 即可。

关于在线打印
在 Luck-Report 的报表预览页面中,可以看到 Luck-Report 提供了三种在线打印方式,分别是直接 HTML 打印、直接 PDF 打印以及 PDF 在线预览打印。这其中直接 HTML 打印是利用浏览器的 HTML 打印功能实现,能用于普通的 A4 纸类型报表页面的打印,同时它不能打印出报表中定义的页眉页脚,如果有定义的话。对于直接 PDF 打印以及 PDF 在线预览打印是服务端向浏览器中写入 PDF 流,利用 Chrome、Firefox、Edge 这些浏览器可以在线显示 PDF 功能实现的打印,这种是直接打印的 PDF,所以可以应付各种复杂报表纸张类型的打印输出。

Firefox 在预览 PDF 时存在的问题
在预览 PDF 时,Firefox 不允许当前 frame 外通过 javascript 调用其打印功能(目前来看可能是 Firefox 的 Bug),所以我们需要手工点击其 frame 内部自带的打印按钮实现打印。

在业务页面中,如果需要预览打印或导出报表,那么就可以采用上述 URL 实现需要的功能。

Luck-Report 报表引擎