1. 概述
1.1 問題描述
FR 雖然有内置的導出按鈕,但是導出名稱不能自定義,如果想要自定義導出文件名稱,那麽該如何實現呢?
1.2 實現思路
方法一:通過模板 Web 屬性中的标題實現自定義導出文件名稱。
方法二:在導出按鈕下的事件中的 JavaScript 腳本中,通過__filename__參數修改導出文件的名稱。
2. 示例
2.1 方法一
1)打開%FR_HOME%\webapps\webroot\WEB-INF\reportlets\GettingStarted.cpt。
2)修改 ds1:SELECT * FROM 銷量 where 地區 ='${Diqu}'。
3)點擊菜單模板>模板參數,添加模板參數Riqi。
4)點擊菜單模板>模板 Web 屬性,輸入标題:${Diqu+"_地區_"+Riqi}。
5)修改模板标題爲動态标題:$Diqu + "地區銷售概況"。
6)打開參數面板,删除查詢按鈕,将下拉框按鈕的控件名修改爲 Diqu:
7)在參數面板添加标簽控件,控件值爲:導出日期:,添加日期控件,控件名稱修改爲:Riqi,控件值選擇公式:TODAY()。
8)給下拉框控件 Diqu 和日期控件 Riqi 添加編輯後事件,實現自動查詢:
JavaScript 代碼如下:
_g().parameterCommit();
9)添加一個按鈕控件,控件名稱改爲:導出,添加點擊事件:
JavaScript 代碼如下:
var DIQU = this.options.form.getWidgetByName("Diqu").getValue();
var RIQI = this.options.form.getWidgetByName("Riqi").getValue();
var REPORT_URL = '${servletURL}?viewlet=doc/JS/自定義導出文件名稱.cpt&Diqu=' + DIQU + '&Riqi=' + RIQI + '&format=excel';
window.location = (encodeURI(encodeURI(REPORT_URL)));
注:Diqu、Riqi 是參數名稱,默認是在當前頁面導出的
10)點擊參數面板空白處,在右側的屬性面板中,将點擊查詢前不顯示報表内容的勾去掉。
2.2 方法二
1)在上節所示基礎上進行修改,清除模板>模板 Web 屬性内的标題。
2)修改點擊事件
選擇導出按鈕,編輯點擊事件,修改js代碼:
JavaScript 代碼如下:
var DIQU = this.options.form.getWidgetByName("Diqu").getValue();
var RIQI = this.options.form.getWidgetByName("Riqi").getValue();
var name = DIQU + "_地區_" + RIQI;
var REPORT_URL = '${servletURL}?viewlet=doc/JS/自定義導出文件名稱2.cpt&Diqu=' + DIQU + '&Riqi=' + RIQI + '&format=excel' + '&__filename__=' + name;
window.location = (encodeURI(encodeURI(REPORT_URL)));
2.3 預覽效果
保存模板,點擊分頁預覽,PC 端效果如下所示:
注:移動端不支持各種打印和導出方式。
3. 模板下載
1)方法一
已完成的模板,可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\參數界面JS實例\11-JS實現自定義導出文件名稱-方法一.cpt
點擊下載模板:11-JS實現自定義導出文件名稱-方法一.cpt
2)方法二
已完成的模板,可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\參數界面JS實例\11-JS實現自定義導出文件名稱-方法二.cpt
點擊下載模板:11-JS實現自定義導出文件名稱-方法二.cpt