樣本學習kettle之Excel Writer步驟,kettlewriter
樣本學習kettle之ExcelWriter步驟
ExcelWriter步驟可以向excel模板檔案中填寫內容的一種方法,並且可以往同一檔案的不同sheet中寫內容。本文通過樣本詳細講解,通過一個轉換產生報表。
ExcelWriter步驟是kettle4.1以上版本才有,同時我們也使用“Block until steps finish”步驟(kettle4.1版本有),如果你使用版本是3.2或4.0,就使用自訂javasc步驟代替。本文的範例程式碼在這裡下載。
最終匯出報表檔案格式
樣本報表檔案主要內容是6個月的銷售和費用資訊,包含三個sheet: “Sales Chart”sheet 包含一個圖表顯示每個月每個類型的銷售情況。
“SourceData“sheet是需要通過kettle填入的來源資料,包括一些欄位、一些計算值以及餅圖。
“Metadata“sheet是報表本身的一些資訊,產生日期,轉換的名稱,在那台主機上產生的。
模板檔案
模板檔案除了格式,輸入之前沒有資料,“SourceData“sheet需要填入相應的資料,其他的欄位自動計算(已經有了公式)。
“Metadata“sheet也需要填入一些資訊。
使用kettle往模板檔案中填入資料
分析上面模板檔案,需填入資料的進入點,共有四個方面需要插入資料。
1. “SourceData“sheet上的year單元格;
2. “SourceData“sheet上的銷售資訊資料;
3. “SourceData“sheet上的費用資訊資料;
4. “Metadata“sheet的單元格;
因為有四個地方需要輸出資料,所以需要在轉換定義四個Excel Writer步驟。問題是kettle的轉換時並存執行的,如果四個步驟同時寫一個excel檔案,則會產生錯誤。因此需要確保按順序執行。我們可以通過定義四個轉換,然後在job中順序調用四個轉換,因為job是順序執行的,這樣就覺得不是很方便。通常不相關的資料要被填入到同一個excel檔案,最好能定義在一個轉換中,便於維護。本文通過另外一種方式實現順序執行,請看:
確保順序執行
轉換中寫excel檔案需四個流程步驟,按照如下順序:year、銷售、費用以及報表元資訊單元格。Excel Writer步驟需要配置寫到同一個檔案,即從模板檔案拷貝的檔案。因此,第一步(year寫入步驟)配置使用模板檔案並建立新的輸出檔案。其他的excel寫入步驟只需要配置輸出檔案(因為已經存在了),但同時也需要選中“wait for first row before creating file”選項(在接收到資料前不建立檔案),這樣是確保在接收到第一個資料後才尋找輸出檔案。
如何做到延遲,在接收到第一行資料時,前面Excel寫入步驟的所有操作都執行完畢,這裡就需要“Block until steps finish”阻止步驟。year寫入步驟是第一個執行,所以需要配置模板檔案和建立輸出檔案,並寫入year資料。銷售寫步驟等待year步驟完成,費用步驟等待銷售步驟完成,元資訊步驟等待費用步驟。結果就像一個精密的鏈式步驟,彼此等待,最終完成各自資料的寫入。
如果你使用3.2或4.0版本,阻止步驟無效,查看附件中相應的版本,使用javascript步驟代替。
樣式問題
往模板檔案中寫資料,應該保留樣式不要改變,所以在Excel Writer步驟的相應的選項選中。
另外活頁簿中的公式需要重新計算,因為Excel版本、檔案類型以及可能其他的一些情況,當開啟產生的檔案時不自動更新計算單元格的值,Excel寫步驟可以用自動重新計算單元格公式,有相應的選項供使用,但是一些函數或命名類型暫時不被poi庫支援,可能報錯,嘗試重新編寫公式、更改xls檔案類型或手工啟用技術(ctrl+shift+alt+F9)。
kettele Excel匯入oracle怎操作?
可以設定按某個欄位匹配。
1、要注意字元類型,這點容易出錯;
2、excel表格中的欄位名字要修改為何oracle中表的欄位名字對應(名字一樣,順序一樣);
3、步驟很簡單,和kettle平時導資料步驟差不多。
在kettle中怎把一個excel的多個sheet頁資料匯入一個表中
增加檔案時可以選擇sheet的,你輸入檔案選擇excel輸入的設定中注意一下。