1. 概述
1.1 應用場景
財務報表、銷售資料表、學生成績表等 Excel 表格中,往往包含多個 Sheet,使用者希望使用 FDL 讀取單 Excel 多 Sheet 檔案資料。
1.2 實現思路
1)在待讀取 Excel 檔案中新增一個 Sheet 頁,使用程式碼將所有 Sheet 頁名稱匯出到該 Sheet 頁中。
2)使用「參數指派」算子,將 Sheet 頁名稱匯出為參數(上圖中的 Sheet4 頁中,第一欄資料不作為參數匯出,只將包含業務資料的 Sheet 頁名稱匯出為參數)。
3)使用「循環容器節點+資料同步」節點:遍歷所有 Sheet 頁名稱參數,讀取所有 Sheet 頁資料。
1.3 任務展示
FineDataLink 中的資料處理程式,詳情參見:https://demo.finedatalink.com/ 「讀取單Excel多sheet檔案資料」。
1.4 注意事項
需要滿足條件:
Excel 檔案的所有 Sheet 頁的欄位名,需要相同。
Excel 需要支援滿足的版本為 97~ 最新版本。
2. 操作步驟
2.1 場景模擬
範例資料:
,範例資料為銷售資料表,包含三個 Sheet 頁。如下圖所示:
現希望在 FDL 中讀取所有 Sheet 頁資料,方便後續進行資料處理。
2.2 生成 Sheet 名索引頁
FDL 的 檔案輸入 算子、資料同步節點>檔案輸入中,支援讀取某個 Sheet 頁資料,且 Sheet 頁名稱支援使用參數。所以,我們需要將所有 Sheet 頁名稱匯出為參數,再使用「循環容器節點+檔案讀取功能」,遍歷讀取所有 Sheet 頁資料。
1)在所有 Sheet 頁最前面新增一個 Sheet 頁(本文範例中,名稱預設為 Sheet4),用來存放所有 Sheet 名稱。如下圖所示:
2)點選「開發工具>查看程式碼」,輸入程式碼並運作程式碼,將所有 Sheet 頁名稱匯出到 Sheet4 中。如下圖所示:
注:使用者操作時,將程式碼第三行的 Sheet4 修改為實際新增的 Sheet 頁名稱。
function 批量獲取工作表名稱(){
let i=1 //定義變數i,用於指定存放工作表名稱的行號,從第1行開始
let tsh=Sheets.Item('Sheet4') //將“Sheet4”工作表定義為tsh
for(let sh of Sheets){ //遍歷工作表
tsh.Cells.Item(i,1).Value2=sh.Name //將工作表名稱寫入“Sheet4”工作表的A列
i++ //每循環一次,行號加1,這樣就不會改寫已經寫入的內容
}
}
3)運作後,Sheet4 介面如下圖所示:
4)儲存表格內容。
2.3 將 Sheet 頁名稱匯出為參數
需要讀取「銷售表」資料的「Sheet4」資料,將 Sheet 名稱匯出為參數,便於後續步驟中讀取所有 Sheet 頁資料。
2.3.1 讀取檔案資料前準備
需要 配置伺服器本地目錄資料連結 OR 配置FTP/SFTP資料連結,讀取 Excel 檔案資料。
本文範例中,將「銷售表」資料放在FTP/SFTP 伺服器上,所以配置了 配置FTP/SFTP資料連結
2.3.2 Sheet 頁名稱匯出為參數
1)FDL 中,建立定時任務,拖入「參數指派」節點,讀取「銷售表」的 Sheet4 頁資料,將 Sheet 頁名稱匯出為參數。如下圖所示:
設定從 Sheet4 的第一欄讀取資料,且第一欄作為欄位名,即第一欄資料不作為參數匯出(第一欄的值為 Sheet4,Sheet4 中並沒有實際業務資料,所以後續步驟中不讀取該 Sheet 頁資料)。
點選「資料預覽」,如下圖所示:
2)點選「匯出參數」Tab頁,將第一欄所有行資料匯出為參數,參數名稱為 name;建議在除錯值中設定一個參數預設值,便於後續節點引用參數後查看效果,除錯值並不參與實際運作。如下圖所示:
2.4 設定循環容器節點
由於待讀取的 Sheet 頁為多個,而讀取檔案資料時每次只能讀取一個 Sheet 頁資料,所以需要使用「循環容器」節點,遍歷所有 Sheet 頁參數。
拖入一個「循環容器」節點,循環方式選擇「遍歷循環」,遍歷物件勾選參數「name」。如下圖所示:
2.5 讀取 Sheet 頁資料
本文範例中,只展示如何讀取單 Excel 多 Sheet 頁資料,資料讀取後並不做處理,所以使用「資料同步-檔案輸入」功能讀取 Excel 資料。
若使用者實際場景中,需要對讀取的資料進行資料,建議「循環容器」節點中拖入「資料轉換」節點,使用「檔案輸入」算子讀取資料,再使用其他算子對資料進行處理。
1)「循環容器」節點中拖入「資料同步」節點,Sheet 名處引用參數 name 讀取 Sheet 頁資料。如下圖所示:
點選「資料預覽」,可查看讀取的資料。如下圖所示:
2)「資料去向與映射」Tab 中,將資料匯出到目標表中。如下圖所示:
3)寫入方式選擇「追加寫入資料」即可。
2.6 效果查看
1)任務運作成功後,介面如下圖所示:
2)目標表資料如下圖所示:
2.7 內容擴展
1)可點選「發佈」按鈕將任務發佈到 生产模式 中。如下圖所示:
2)不同場景中讀取檔案資料範例:應用範例