一、从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文档