1. 概述
1.1 問題描述
JS實現自定義導出文件名稱 中,可以在模板「參數面板」中自定義導出按鈕,利用 JS 實現自定義導出文件名。當很多模板都要實現這個功能時,每個模板都寫一遍 JS,比較麻煩。所以可以預定義一個導出按鈕,需要時就可以直接拖拽添加。如下圖所示:
1.2 實現思路
通過「控件管理」自定義一個導出按鈕,按鈕添加 JS 事件,實現導出功能。
2. 示例
2.1 預定義按鈕
1)設計器菜單欄打開服務器>控件管理。如下圖所示:
2)新建一個控件,并設置屬性。如下圖所示:
①點擊加号新建一個控件
②雙擊修改名稱爲導出
③選擇控件類型爲按鈕控件
④控件名爲export
⑤按鈕類型爲普通,按鈕名字爲導出
3)點擊事件,添加參數與 JS 代碼,然後點擊右下角确定。如下圖所示:
參數如下:
servletURL:公式servletURL
reportName:公式reportName
exportName:公式indexofarray(split(indexofarray(REVERSEARRAY(split(reportName,"/")),1),".c"),1)+"_"+format(now(),"yyyyMMddHHmm"),此處自定義文件名。
JavaScript 代碼如下:
注:此代碼實現的默認導出文件名稱爲:模板名字_導出時間(具體到分鍾)。
//定義報表URL,通過内置參數 servletURL、reportName 獲取對應模板的路徑和名稱
var url=servletURL+"?viewlet="+reportName;
//遍曆參數面板控件,獲取對應的參數值。
$.each(this.options.form.name_widgets,function(i,item) {
if(item.options.type!== 'label'&&item.getName()!="PARA"&&item.getName()!="SEARCH"&&item.getName()!="EXPORT") {
url+="&"+item.getName()+"="+item.getValue();
}
});
//在URL上加上打印參數
url+="&format=excel&extype=simple&__filename__="+exportName;
window.location=encodeURI(encodeURI(url));//轉碼導出
2.2 使用按鈕
打開一個模板,如内置模板:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\GettingStarted
1)在參數面板工具欄,點擊小三角符就可以看到自定義的導出按鈕,按住可以拖動到參數面板使用。如下圖所示:
2)保存模板,點擊「分頁預覽」,查詢出報表内容後點擊「導出」按鈕即可導出Excel,效果如下圖所示:
注:不支持移動端。
3. 模板下載
已完成模板可參見:
%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\參數界面JS實例\JS實現預定義導出按鈕.cpt
點擊下載模板:JS實現預定義導出按鈕.cpt