當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

JS 實現分 Sheet 導出 Excel

1. 概述

1.1 問題描述

Excel 導出時,用戶希望實現分組分 sheet 導出,即每個sheet 頁中報表格式相同,内容不同。如下圖所示,sheet 1爲華東地區銷售概況,sheet 2 爲華北地區銷售概況。

2020-09-25_10-12-19.gif

1.2 實現思路

添加 JS 實現:爲報表 URL 添加可以實現分頁導出的參數,參數包括導出格式參數和導出頁數參數。

不同的場景對應不同的實現方法,如下兩種場景:

  • 場景1:參數查詢報表,導出後每個參數值對應的報表内容在一個 sheet 頁。

  • 場景2:行式報表,按組分頁後,導出後每一組内容對應一個 sheet 頁。

2. 參數查詢報表

使用 %FR_HOME%\webapps\webroot\WEB-INF\reportlets路徑下的模板 GettingStared.cpt 示例場景 1 ,Excel 導出效果爲一個地區一個 sheet 頁。

若内置模板已損壞或删除,可點擊下載:GettingStarted.cpt

2.1 模板準備

打開模板 GettingStared.cpt ,先對模板做部分修改。修改内容如下:

在 A1 單元格将标題改爲公式 $地區+"地區銷售概況",修改報表 sheet 名稱爲公式 =A4 ,如下圖所示:

image.png

2.2 實現分頁導出

在參數面板添加按鈕後,爲按鈕添加 JS 事件實現分地區分頁導出。

2.2.1 添加導出按鈕

在參數面板中添加一個按鈕控件,将控件名字修改爲「導出EXCEL」,如下圖所示:

image.png

2.2.2 添加JS代碼

點擊「導出EXCEL」按鈕,在「控件設置」>「事件」處,添加一個「點擊」事件,如下圖所示:

image.png

JavaScript 代碼如下:

注:添加 JS 代碼後,注意添加事件參數,參數名:area,值爲公式:sql("FRDemo","select distinct 地區 from 銷量",1)

var url = 'report?reportlets=';//定義url
var pars = '&format=excel&__filename__=1';//設置導出格式和導出文件名稱
var path = "${reportName}";//獲取模板名稱和路徑
//獲取模板中參數值,以數組形式存儲,每個參數值對應一個sheet
var json = [];
for (var i = 0; i < area.length; i++) {
var sheet = {
reportlet: path,
地區: area[i]
};
json.push(sheet);
}
jsonStr = encodeURIComponent(JSON.stringify(json));//對url進行encodeURIComponent編碼
url += jsonStr;//給url添加模板參數
url += pars;//給url添加導出參數
alert(url);//打印url
window.open(url);
顯示代碼

2.3 效果預覽

2.3.1 PC 端

保存模板,點擊「分頁預覽」,在報表畫面點擊「導出Excel」按鈕,導出後一個地區一個 sheet 頁,效果如 1.1 節所示。

2.3.2 移動端

移動端及 HTML5 效果如下圖所示:

367ddb6e-e79c-4e9b-bd04-28fea1ba78ff.jpg

3. 行式報表

新建行式報表,實現場景 2 的效果,導出後每一組内容對應一個 sheet 頁。

3.1 模板準備

1)新建模板,新建數據集 ds1,sql 語句爲:SELECT * FROM [銷量] ORDER BY 地區

2)将 ds1 數據集中字段拖到 A1-F1單元格,設置單元格樣式,如下圖所示:

image.png

3)點擊 A1單元格,爲其添加「條件屬性」,實現分組分頁,其中分頁條件爲 :currentValue 不等於 '=HIERARCHY(A1)' and &A1!=1,如下圖所示:

注:條件屬性的作用爲若當前值和前一個值不相等就杭後分頁。HIERARCHY(A1)作用爲獲取上一個地區的值,A1 單元格擴展後第一個值的上一個值爲空,所以用 A1!=1 排除。

2020-09-25_14-35-10.jpg

3.2 實現分頁導出

3.2.1 添加導出按鈕

在參數面板中添加一個按鈕控件,将控件名字修改爲「導出Excel」,如下圖所示:

2020-09-25_14-42-57.jpg

3.2.2 添加JS代碼

點擊「導出EXCEL」按鈕,在「控件設置」>「事件」處,添加一個「點擊」事件,如下圖所示:

image.png

JavaScript 代碼如下:

//根據模板存儲位置和信息定義url
var url = 'http://localhost:8075/webroot/decision/view/report?viewlet=doc/SpecialSubject/ExcelImport/JS實現行式報表分Sheet導出Excel.cpt';
var pars = '&format=excel&extype=sheet&__filename__=2';//設置導出格式和導出文件名稱
url += pars;//給url添加導出參數
alert(url);//打印url
window.open(encodeURI(encodeURI(url)));//FR.cjkEncode(url)對url進行編碼

注:JS 代碼中 url 地址非固定,要根據模板名稱和模板存儲位置修改。

3.3 效果預覽

保存模板,點擊「分頁預覽」,在報表畫面點擊「導出EXCEL」按鈕,導出後一個地區一個 sheet 頁,效果如下圖所示:

注:不支持移動端

2020-09-25_15-13-54.gif

4. 模板下載

參數查詢報表已完成模板可參見:%FR_HOME%\webapps\webroot\WEBINF\reportlets\doc\SpecialSubject\ExcelImport\JS實現參數報表分Sheet導出Excel.cpt

點擊下載模板:JS實現參數報表分Sheet導出Excel.cpt

行式報表已完成模板可參見:%FR_HOME%\webapps\webroot\WEBINF\reportlets\doc\SpecialSubject\ExcelImport\JS實現行式報表分Sheet導出Excel.cpt

點擊下載模板:JS實現行式報表分Sheet導出Excel.cpt

附件列表


主題: 原簡體文檔
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

5s后關閉

反饋已提交

網絡繁忙