反饋已提交

網絡繁忙

JS實現分Sheet匯出Excel

一、概述

  1. 使用場景:Excel 匯出時,使用者希望實現分組分 Sheet 匯出,即每個 Sheet 頁中報表格式相同,內容不同。

  2. 功能簡介:通過 JavaScript 實現:為報表 URL 新增可以實現【分頁匯出】的參數,參數包括【匯出格式參數】和【匯出頁數參數】。

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

    參數查詢報表,匯出後每個參數值對應的報表內容在一個 Sheet 頁。

    範本按組分頁後,匯出後每一組內容對應一個 Sheet 頁。

注:若匯出時分頁過多,在 URL 中連接的參數會因過多而導致 URL 過長,進而導致瀏覽器報 400(請求頭太大),無法正常匯出。

二、場景一:根據參數分 Sheet

1
準備範本。
  1. 使用 %FR_HOME%\webapps\webroot\WEB-INF\reportlets路徑下的範本 GettingStartedTW.cpt 作為【場景 1】範例 。

  2. 打開範本後先對範本做部分修改,修改內容:

    在 A1 儲存格將標題改為公式:【$地區+"地區銷售概況"】。

    修改報表 Sheet 名稱為公式: 【=A4】(等號需手動輸入),如下圖所示。


image.png

 

2
設定分頁匯出。
  1. 新增匯出按鈕:在參數面板中新增一個【按鈕元件】,將按鈕名字修改為【匯出EXCEL】。如下圖1所示。

  2. 新增點擊事件:選中【匯出EXCEL】按鈕元件,在【元件設定】→【事件】處,新增一個【點擊】事件。新增一個事件參數,參數名為【area】,值為【公式】:【sql("FRDemoTW","select distinct 地區 from 銷量",1)】。步驟如下圖2所示。輸入 JavaScript 代碼如下代碼塊1。

  3. 如果是掛載到平台,那麼還需要修改下代碼裏面的 URL 才行,否則會報錯:【該節點已被刪除】。輸入 JavaScript 代碼如下代碼塊2。


image (1).png

 

image (2).png

 

image (3).png

 

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);

 

3
效果預覽。
  1. 儲存範本,點擊【分頁預覽】,點擊【匯出EXCEL】按鈕,匯出後一個地區一個 Sheet 頁,效果如下圖所示。

注:不支援行動端。

 

3.gif

 

三、場景二:分組分 Sheet

1
資料準備。
  1. 建立普通報表,匯出後每一組內容對應一個 Sheet 頁。建立資料庫查詢,SQL 查詢語句為:SELECT * FROM 銷量 ORDER BY 地區。


image.png

 

2
設計報表。
  1. 將 ds1 資料集中欄位依次拖曳到 A2:E2 儲存格,將 A2 儲存格【資料設定】修改為【列表】。設定儲存格樣式如下圖1所示。

  2. 在第一行序號處,滑鼠右鍵點擊【設定重複標題列】,使標題列每一頁都顯示,匯出時也顯示在每個 Sheet 頁。如下圖2所示。


image (1).png

 

image (2).png

 

3
設定分組。
  1. 選中 A2 儲存格,新增一個【分頁】的條件屬性,選擇分頁型別為【行前分頁】。條件需要設定兩個條件,用 AND 連結。

  2. 條件一為【普通】條件:currentValue 不等於 '=HIERARCHY(A2)'。HIERARCHY等同於層次座標 ,獲取上一個儲存格的值。

  3. 條件二為【公式】條件:&A2!=1。A2 儲存格擴展後第一個值的上一個值為空,所以用【序號不等於 1】排除。

  4. 結合起來即表示:當前儲存格值如果不等於上一個儲存格值,那麼在當前儲存格處進行【行前分頁】。如下圖所示。


image (3).png

 

image (4).png

 

4
設定匯出。
  1. 新增匯出按鈕:在參數面板中新增一個【按鈕元件】,將按鈕名字修改為【匯出EXCEL】。如下圖1所示。

  2. 新增點擊事件:選中【匯出EXCEL】按鈕元件,在【元件設定】→【事件】處,新增一個【點擊】事件。如下圖2所示。輸入 JavaScript 代碼如下。

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

 

image (5).png

 

image (6).png

 

//根據範本儲存位置和資訊定義url。
var url = 'http://localhost:8075/webroot/decision/view/report?viewlet=JS實現列
式報表分Sheet匯出Excel.cpt';//該路徑為當前範本的儲存路徑,您可自行修改。
var pars = '&format=excel&extype=sheet&__filename__=2';//設定匯出格式和匯出檔案名稱稱。
url += pars;//給url新增匯出參數。
alert(url);//列印url。
window.open(encodeURI(encodeURI(url)));

 

5
效果預覽。
  1. 儲存範本,點擊【分頁預覽】,點擊【匯出EXCEL】按鈕,匯出後相同地區的值在一個 Sheet 頁,效果如下圖所示。

注:不支援行動端。

 

4.gif

 

四、範本下載

附件列表


主題: 報表專題
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

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

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

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙