大數據集導出

ps:1.報表模式應該爲 數據分析 模式

2.設置列名 columns 時候,不應該有空格存在,逗號後邊也不能有,MySQL複製所有列名時,會自帶空格;

 

3.實例:


//獲取參數控件值
var Data_Source = this.options.form.getWidgetByName("var_Data_Source").getValue(); 
//alert(Data_Source);

//獲取參數控件值

var end_Estimate_Year_Month = this.options.form.getWidgetByName("var_end_Estimate_Year_Month").getValue(); 
//alert(end_Estimate_Year_Month);

//獲取參數控件值

var start_Estimate_Year_Month = this.options.form.getWidgetByName("var_start_Estimate_Year_Month").getValue(); 
//alert(start_Estimate_Year_Month);

//獲取參數控件值

var month = this.options.form.getWidgetByName("var_month").getValue(); 
//alert(month);

//獲取參數控件值

var year = this.options.form.getWidgetByName("var_year").getValue(); 
//alert(year);

//接口爲directExportToExcel: function (dsName, fileName, params, colNames)
//注意參數中的特殊字符需要進行url編碼,比如大括號,冒號等。

//將變量值賦值到URL中

var paramStr = encodeURIComponent("{var_Data_Source:"+Data_Source+",var_end_Estimate_Year_Month:"+end_Estimate_Year_Month+", var_start_Estimate_Year_Month:"+start_Estimate_Year_Month+", var_month:"+month+", var_year:"+year+"}")
//alert(paramStr)

//數據集傳參,//指定導出的數據列,導出字段按此順序排列,爲空默認導出所有,最好不要爲空;並且列名之間不能有空格
var colNames = encodeURIComponent("id,Data_Source,Sequence,Year,Month,Estimate_Year,Estimate_Month,Estimate_Year_Month,AR_Source,Operating_Unit,Trx_Number,Order_Number,Delivery,Sales_BU,Salesrep_Number,Salesperson,Order_Type,Customer_Number,Customer,Customer_Short_Name,Account_Type_1,Distributor,Bill_to,Tier1_end_customer,GL_Date,Departure_Date,Ordered_Item,Description,Size,Currency,Quantity,Unit_Price,Amount,Exchange_Rate,Local_Currency,Total_Amount_Local_Currency,Exchange_Rate_TM,Total_Amount_CNY,Total_Amount_USD,Total_Amount_EUR,Total_Amount_JPY,Tax_Classification_Code,Warehouse,Shipping_Org_Area,Customer_PO,Incoterms,Payment_Terms,Included_in_Revenue,Account_Type,Cutting,Granule_Quantity,Market_Segments,Organization,Opp_No,Ship_To_Location,Item_Category,Tokyo_Flag,Sales_Rounting_Num,Outship_Flag,Inship_Flag,Legal_Entity,BD_FD_Flag,Group1,Group2,Group3,Business_Area,MP_Region,Technique_Type,Type,NL_TM,Global_Account_Region,Parent_Account,Oper_Sign,Record_Date");


_g().directExportToExcel("ds1",Data_Source+"-"+start_Estimate_Year_Month+"~"+end_Estimate_Year_Month+"明細",paramStr,colNames);

 

 

 

大數據集導出

 

1. 版本

  報表服務器版本 JAR 包
10.0 2018-12-27

2. 概述

2.1 應用場景

目前 FineReport 對於大數據量的模板導出時,可能存在時間過長或內存佔用過大的情況。

爲了防止這樣造成宕機的風險,FineReport 10.0 新增了「大數據集導出」的功能,可直接根據數據集結果進行導出。

2.2 功能描述

此功能主要是針對明細表,它可以實現跳過報表計算直接取數導出。

3. 思路

通過自定義 JS 調用接口,實現原理如下:

1)使用 SXSSFWorkbook 流式行導出,速度快;

2)使用生產者消費者模式,一個線程用於取數,把數據行存在隊列中,另一線程讀取行導出;

4. 接口

注:此功能只支持關係型數據庫,且 SQL Server 數據庫需要把遊標設置爲服務器遊標。

Key   Value   舉例  
sessionID 具體sessionID   
dsName 數據集名稱 ds1
params 數據集參數 JSON,參數名:參數值 {

id: '9527',

name:'Stephen'

}

columns 列名稱用逗號分割,不指定使用數據集所有字段 col1,col2,...
fileName 導出文件名稱,不指定使用默認的“模板名-數據集名稱.xlsx”   

接口示例如下:

//接口爲directExportToExcel: function (dsName, fileName, params, colNames)
//注意參數中的特殊字符需要進行url編碼,比如大括號,冒號等。
var paramStr = encodeURIComponent("{param1:1,param2:\"21','22\",param3:\"text\",...}")
//數據集傳參,字符串參數建議寫成格式\"text\"
var colNames = encodeURIComponent("col1, col2, col3,...")//指定導出的數據列,導出字段按此順序排列,爲空默認導出所有;另外列名逗號之間不能有空格
_g().directExportToExcel("數據集名稱", "導出文件名稱", paramStr, colNames)

5. 示例一:導出數據集參數爲單個值

5.1 模板設置

打開模板 %FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\使用常用參數組合.cpt

5.2 控件設置

在參數面板中添加導出按鈕,並新增點擊事件,如下圖所示:

1562816716987200.png

JS 代碼如下:

//接口爲directExportToExcel: function (dsName, fileName, params, colNames)
//注意參數中的特殊字符需要進行url編碼,比如大括號,冒號等。
var paramStr = encodeURIComponent("{area:華北,province:河北}")
//數據集傳參
var colNames = encodeURIComponent("訂單ID,貨主名稱,貨主地區,貨主省份,貨主城市,貨主地址")
//指定導出的數據列,導出字段按此順序排列,爲空默認導出所有;另外列名逗號之間不能有空格
_g().directExportToExcel("ds1","訂單",paramStr,colNames)

注:這裏的參數名是指模板參數名,而不是數據集中的數據列名。

5.3 實現效果

點擊導出按鈕,可以將 ds1 數據集導出來,如下所示:

111.png

6. 示例二:導出數據集參數爲多個值

6.1 模板設置

打開模板%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\使用常用參數組合.cpt

6.2 控件設置

在參數面板中添加導出按鈕,並新增點擊事件,如下圖所示:

1562817491188305.png

JS 代碼如下:

//接口爲directExportToExcel: function (dsName, fileName, params, colNames)
//注意參數中的特殊字符需要進行url編碼,比如大括號,冒號等。
var paramStr = encodeURIComponent("{area:\"華北','華東\",province:\"北京','山東\"}")
//數據集傳參
var colNames = encodeURIComponent("訂單ID,貨主名稱,貨主地區,貨主省份,貨主城市,貨主地址")
//指定導出的數據列,導出字段按此順序排列,爲空默認導出所有;另外列名逗號之間不能有空格
_g().directExportToExcel("ds1","訂單",paramStr,colNames)

注:在sql參數值的前後需要加上 \ ,防止被解析。

注:這裏的參數名是指模板參數名,而不是數據集中的數據列名。

6.3 實現效果

點擊導出按鈕,可以將 ds1 數據集導出來,如下所示:

222.png

7. 已完成模板

7.1 示例一模板

已完成模板,可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\大數據集導出-單數據.cpt

模板下載請點擊:大數據集導出-單數據.cpt

7.2 示例二模板

已完成模板,可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\大數據集導出-多數據.cpt

模板下載請點擊:大數據集導出-多數據.cpt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章