根據參數批量匯出多個檔案

1. 概述

1.1 預期效果

實際業務場景中,可能會遇到需要從當前表篩選資料並分別匯出為多個檔案,如下圖所示:

1639117762965229.gif

1.2 實現思路

參數面板中新增「按鈕元件」並設定「點選事件」,獲取「下拉複選框元件」選中的參數,點選按鈕批量匯出當前表。

2. 範例

2.1 資料準備

建立普通報表,建立資料庫查詢 ds1,SQL 查詢語句為: 

SELECT * FROM 庫存

where 1=1 ${if(len(倉庫) == 0,"","and 倉庫 in ('" + 倉庫 + "')")}

where 1=1 表示條件永真,防止沒有參數條件時,where 後面沒有有效內容導致出錯。

len(倉庫)==0 表示參數「倉庫」為空。

and 倉庫 in ('" + 倉庫 + "')中間的「倉庫」表示獲取的參數值,+ 為字串連接符號。

查詢語句表示:

參數「倉庫」為空時,查詢語句相當於:SELECT * FROM 庫存 

當參數「倉庫」不為空時,查詢語句相當於:SELECT * FROM 庫存 WHERE 1=1 and 倉庫 in ('${倉庫}')

2.2 報表設計

樣式設定如下圖所示:

注意:倉庫資料欄所在的 A5 儲存格需要新增過濾條件,根據參數展示資料,條件之間用「and」連結,具體如下圖所示: 

2.3 元件設定

1)編輯參數介面,將參數「全部新增」進參數面板。

2)設定「期初」和「期末」參數元件類型為「日期元件」,並設定預設日期。

3)設定「倉庫」參數為「下拉複選框元件」,設定元件「資料字典」為 資料庫 FRDemo 中「庫存」表,實際值與顯示值均為「倉庫」列。回傳值類型選擇「字串」,分隔符手動輸入「','」。

4)將查詢按鈕名稱修改為「生成庫存台賬」。

5)拖入按鈕元件,修改名稱為「批量匯出」。調整元件位置,最後介面如下圖所示:

2.4 新增點選事件

選中「批量匯出」按鈕,新增點選事件,輸入 JavaScript 程式碼如下:

注:將程式碼中 &format=excel 中 excel 修改為 word、pdf 即可以匯出對應格式檔案。

function ForTime(oldTime{
Date.prototype.format = function(fmt{
var o = {
"M+"this.getMonth() + 1,
"d+"this.getDate(),
"h+"this.getHours(),
"m+"this.getMinutes(),
"s+"this.getSeconds(),
"q+"Math.floor((this.getMonth() + 3) / 3),
"S"this.getMilliseconds()
};
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(fmt)) {
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
}
}
return fmt;
}
var oldTime = (new Date(oldTime)).getTime();
var curTime = new Date(oldTime).format("yyyy-MM-dd");
return curTime;
}

var url = '根據參數批量匯出多個檔案.cpt';
var name = _g().getParameterContainer().getWidgetByName("倉庫").getValue();
var qc = _g().getParameterContainer().getWidgetByName("期初").getValue();
var qm = _g().getParameterContainer().getWidgetByName("期末").getValue();

var arr = name.split("','");

for (var i = 0; i < arr.length; i++) {
var pars = '&format=excel&extype=sheet&__filename__=' + arr[i];
window.open("${servletURL}?viewlet=" + encodeURI(url + pars) + "&倉庫=" + encodeURI(arr[i]) + "&期初=" + encodeURI(ForTime(qc)) + "&期末=" + encodeURI(ForTime(qm)), "_blank");
}


显示代码

2.5 效果預覽

儲存報表,為了避免分頁效果,我們點選「資料分析」預覽,效果如 1.1 節預期效果一致。

注1:如果發現只能匯出一個 Excel 的話,確認程式碼無誤的情況下,需要把瀏覽器的禁止彈窗設為允許。

注2:不支援 IE 瀏覽器。不支援行動端。

3. 範本下載

附件列表


主題: 報表專題
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
中文(繁體)

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

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

不再提示

9s后關閉

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

反馈已提交

网络繁忙

反饋已提交

網絡繁忙