反饋已提交

網絡繁忙

JS實現分Sheet匯出Excel

1. 概述

1.1 預期效果

Excel 匯出時,使用者希望實現分組分 Sheet 匯出,即每個 Sheet 頁中報表格式相同,內容不同。如下圖所示,Sheet1為華東地區銷售概況,Sheet2 為華北地區銷售概況。

1.2 功能簡介

透過 JavaScript 實現:為報表 URL 新增可以實現「分頁匯出」的參數,參數包括「匯出格式參數」和「匯出頁數參數」。

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

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

2. 根據參數分 Sheet

2.1 準備範本

使用 %FR_HOME%\webapps\webroot\WEB-INF\reportlets路徑下的範本 GettingStarted.cpt 作為「場景 1」範例 。

開啟範本後先對範本做部分修改,修改內容如下:

在 A1 儲存格將標題改為公式: $地區+"地區銷售概況",修改報表 Sheet 名稱為公式: =A4(等號需手動輸入),如下圖所示:

image.png

2.2 設定分頁匯出

2.2.1 新增匯出按鈕

在參數面板中新增一個「按鈕元件」,將按鈕名稱修改為「匯出EXCEL」。如下圖所示:

image (1).png

2.2.2 新增點選事件

選中「匯出EXCEL」按鈕元件,在「元件設定>事件」處,新增一個「點選」事件。新增一個事件參數,參數名為「area」,值為「公式」類型:sql("FRDemo","select distinct 地區 from 銷量",1)

輸入 JavaScript 程式碼如下:

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

步驟如下圖所示:

image (2).png 

注:如果是掛載到平台,那麼還需要修改下程式碼裏面的 URL 才行,否則會報錯:該節點已被刪除。

image (3).png

修改的程式碼如下:

var url = '/webroot/decision/view/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 效果預覽

儲存範本,點選「分頁預覽」,點選「匯出EXCEL」按鈕,匯出後一個地區一個 Sheet 頁,效果如 1.1 節預期效果所示。

注:不支援行動端。 

3. 範本下載

附件列表


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

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

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

不再提示

10s後關閉

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

反馈已提交

网络繁忙