历史版本32 :自定义导出按钮 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 描述编辑

FineReport 支持多种不同的导出方式,直接使用 FineReport 内置导出按钮可以非常快捷方便的来对各种格式的输出,但是我们在 Web 页面集成 中的时候,往往只想将报表内容嵌入到 iframe 中,而工具栏以及工具栏上的按钮都会隐藏掉,而使用 Web 页面自定义的按钮,那么,此时,这种自定义按钮如何实现导出呢,如下图所示:

222

2. 示例编辑

如上图所示,我们新建一个 HTML 页面,定义一个工具栏和一个 iframe,工具栏中定义上图所示的按钮,iframe 中嵌入 FR 中的报表,如下图:

222

2.1 FR 报表设置

打开设计器,找到上面 Web 页面中嵌入的那张模板,由于要使用自定义按钮作为工具栏,那么FR报表内置的工具栏就无需显示出来。点击模板>模板 Web 属性>分页预览设置,去掉使用工具栏前面的勾选,如下图:

222

2.2 自定义导出按钮

Web 页面中定义了 9 个自定义导出按钮,那么怎样才能实现导出操作呢?

FineReport 导出操作的 JS 接口为:

导出 PDF:exportReportToPDF()

导出[Excel](分页):exportReportToExcel('page')

导出[Excel](原样):exportReportToExcel('simple')

导出[Excel](分页分sheet):exportReportToExcel('sheet')
注:之前的 JAR 导出的 Excel 默认 xls 格式,2016 年 10 月 10 日以后的 JAR 包,poi 包已经内置到 third 包,因此导出的 Excel 默认为 xlsx 格式,添加_isExcel2003 为 xls 格式,例如:

导出[Excel](分页导出xls格式):exportReportToExcel('page_isExcel2003')
导出[Excel](原样导出xls格式):exportReportToExcel('simple_isExcel2003')
导出[Excel](分页分sheet导出xls格式):exportReportToExcel('sheet_isExcel2003')

导出[图片]:exportReportToImage('gif')【括号里面可以更换参数,比如说 png,jpg 等等图片类型】

导出[word]:exportReportToWord()

故,各个按钮的点击事件应该调用上述的 JS 接口来实现其对应的导出格式,比如说导出 PDF,那么其按钮的 onclick 事件为:

onclick="document.getElementById('reportFrame').contentWindow.contentPane.exportReportToPDF()"

注:docment.getElementById('reportFrame')是获取到 iframe 框架,然后通过 contentWindow 得到报表窗口,并拿到 contentPane 这个报表容器,最后就可以从容器中调用各种导出接口的方法了。

其他的几个按钮的导出事件这里就不一一讲解了。

2.3 完整代码

根据上述同样的方法为其他几个按钮添加导出事件,完整代码如下:

<html>
  <head>  
  <title>FineReport自定义导出</title>  
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
  </head>  
  <body>
 
    <fieldset>
    <div id="toolbar">       
    <button type="button"  onclick="document.getElementById('reportFrame').contentWindow.contentPane.exportReportToPDF()">导出[PDF]</button>  
    <button type="button"  onclick="document.getElementById('reportFrame').contentWindow.contentPane.exportReportToExcel('page')">导出[Excel](分页)</button>       
    <button type="button"  onclick="document.getElementById('reportFrame').contentWindow.contentPane.exportReportToExcel('simple')">导出[Excel](原样)</button>       
    <button type="button"  onclick="document.getElementById('reportFrame').contentWindow.contentPane.exportReportToExcel('sheet')">导出[Excel](分页分sheet)</button>
    <button type="button"  onclick="document.getElementById('reportFrame').contentWindow.contentPane.exportReportToExcel('page_isExcel2003')">导出[Excel](分页导出xls格式)</button>      
    <button type="button"  onclick="document.getElementById('reportFrame').contentWindow.contentPane.exportReportToExcel('simple_isExcel2003')">导出[Excel](原样导出xls格式)</button>       
    <button type="button"  onclick="document.getElementById('reportFrame').contentWindow.contentPane.exportReportToExcel('sheet_isExcel2003')">导出[Excel](分页分sheet导出xls格式)</button> 
    <button type="button"  onclick="document.getElementById('reportFrame').contentWindow.contentPane.exportReportToImage('png')">导出[图片]</button>  
    <button type="button"  onclick="document.getElementById('reportFrame').contentWindow.contentPane.exportReportToWord()">导出[Word]</button>              
    </div>  
    </fieldset>
    <iframe id="reportFrame" width="100%" height="100%" src='/webroot/decision/view/report?viewlet=doc/Primary/DetailReport/Details.cpt' ></iframe>  
  </body>  
</html>

2.4 效果查看

点击不同的按钮,即可看到其导出的结果:

222