一、從excel中讀取數據
二、重命名excel中的列名,作爲後續輸出字段名使用
添加“字段選擇”模塊,並編輯
三、新增Excel中沒有的列名,作爲後續輸出字段使用
四、添加“Java代碼”對讀取的Excel文檔內容進行自定義處理
其中 processRow 方法爲數據處理的主要模塊,它會對前面步驟傳過來的每一行數據進行迭代,直到方法內部返回 false 值,如果要繼續就返回 true 值:
import java.util.*;
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
Object[] r = getRow();
if (r == null) {
setOutputDone();
return false;
}
List indexLogList = new ArrayList();
r = createOutputRow(r, data.outputRowMeta.size());
String sjsx_column =get(Fields.In,"事項名稱").getString(r);
String dwmc_column =get(Fields.In,"單位名稱").getString(r);
logBasic("涉及事項:" + sjsx_column + ",涉及單位:" + dwmc_column);
String sl_column =get(Fields.In,"受理").getString(r);
String sh_column =get(Fields.In,"審覈").getString(r);
String sp_column =get(Fields.In,"審批").getString(r);
String bj_column =get(Fields.In,"辦結").getString(r);
int hjs = 0;
if(sl_column != null && sl_column != ""){
hjs += 1;
indexLogList.add(sl_column);
logBasic("受理人:" + sl_column);
}
if(sh_column != null && sh_column != ""){
hjs += 1;
indexLogList.add(sh_column);
logBasic("審覈人:" + sh_column);
}
if(sp_column != null && sp_column != ""){
hjs += 1;
indexLogList.add(sp_column);
logBasic("審批人:" + sp_column);
}
if(bj_column != null && bj_column != ""){
hjs += 1;
indexLogList.add(bj_column);
logBasic("辦結人:" + bj_column);
}
logBasic("環節數:" + hjs);
get(Fields.Out, "環節數").setValue(r, Long.valueOf(hjs));
get(Fields.Out, "姓名1單位").setValue(r, dwmc_column);
get(Fields.Out, "姓名1(支持多個,隔開)").setValue(r, sl_column);
logBasic("姓名1(支持多個,隔開)填充數據:" + sl_column);
if(hjs >= 2){
get(Fields.Out, "姓名2單位").setValue(r, dwmc_column);
get(Fields.Out, "姓名2(支持多個,隔開)").setValue(r, indexLogList.get(1));
logBasic("往姓名2單位填充數據:"+ (String)indexLogList.get(1));
}
if(hjs >= 3){
get(Fields.Out, "姓名3單位").setValue(r, dwmc_column);
get(Fields.Out, "姓名3(支持多個,隔開)").setValue(r, indexLogList.get(2));
logBasic("往姓名3單位填充數據:"+(String)indexLogList.get(2));
}
if(hjs >= 4){
get(Fields.Out, "姓名4單位").setValue(r, dwmc_column);
get(Fields.Out, "姓名4(支持多個,隔開)").setValue(r, indexLogList.get(3));
logBasic("往姓名4單位填充數據:"+ (String)indexLogList.get(3));
}
putRow(data.outputRowMeta, r);
return true;
}
五、輸出Excel文檔