talend工具經過關鍵字來取得text文本中的數據

問題描述:java

在文件夾中有多個text文本,經過關鍵字來取得text文本里面我所須要的數據,並出力到Excel裏面。取得的數據,在text文本里面多是多行的存在,而且在Excel裏面是一行的存在。app

 

解決方法:工具

解決方法,在talend工具裏面加入控件「tjava」,以後寫入java代碼來讀取text文本文件,以後利用stringBuffer來處理成字符串的形式,在此階段把text文本里面的多行數據造成一行以後向下一個階段傳值。ui

 

下圖是用talend工具畫的示意圖spa

選擇tjava_2以後再「コンポーネント」裏面編輯Java代碼。而且在「Conexts」裏面能夠設定參數[context],在下面的代碼當中最重要的代碼是[3d

context.txtStr = strBuData.toString();code

row1.txtStr = context.txtStr;]orm

 

String fileName = "C:/メール格式/"+( new SimpleDateFormat("yyyyMMdd").format(new Date()))+"/"+ ((String)globalMap.get("tFileList_1_CURRENT_FILE")); File file = new File(fileName); try (InputStreamReader  fr = new InputStreamReader(new FileInputStream(file), "SJIS"); BufferedReader reader = new BufferedReader(fr)) { String temp = ""; String[] strTemp= {",",",",",",",",",",",",",",",",","}; while ((temp = reader.readLine()) != null) { if (temp.indexOf("名前") > 0){ strTemp[0] = temp + ","; } if (temp.indexOf("性別") > 0){ strTemp[1] = temp + ","; } if (temp.indexOf("年齢") > 0){ strTemp[2] = temp + ","; } if (temp.indexOf("経験年數") > 0){ strTemp[3] = temp + ","; } if (temp.indexOf("最寄駅") > 0){ strTemp[4] = temp + ","; } if (temp.indexOf("日本語レベル") > 0){ strTemp[5] = temp + ","; } if (temp.indexOf("スキル") > 0){ strTemp[6] = temp + ","; } if (temp.indexOf("業種") > 0){ strTemp[7] = temp + ","; } if (temp.indexOf("但願単価") > 0){ strTemp[8] = temp + ","; } } StringBuilder strBuData = new StringBuilder(); for(int i = 0; i < strTemp.length; i++){ strBuData.append(strTemp[i]); } context.txtStr = strBuData.toString(); row1.txtStr = context.txtStr; } catch(FileNotFoundException e) { throw new Exception(e); }

在「詳細設定」裏面導入你所寫的Java代碼所須要的包文件。blog

import java.io.BufferedReader; import java.io.FileInputStream; import java.io.BufferedInputStream; import java.io.InputStreamReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.util.Map;

以上就是對「tjava_2」控件的編輯及代碼的作成。字符串

「tjava_1」控件的做用是對所生成的數據進行各類各樣的判斷。例如:須要截取所傳參數的多少位,以後顯示在Excel裏面。所須要的代碼以下:

選中控件「tjava_1」在「コンポーネント」裏面編輯下列代碼。

String foo = "bar"; outputDataConver.setName("input"); outputDataConver.setSex("input"); outputDataConver.setAge("input"); outputDataConver.setKkns("input"); outputDataConver.setMyk("input"); outputDataConver.setLebel("input"); outputDataConver.setSkill("input"); outputDataConver.setGysyr("input"); outputDataConver.setCost("input");

以後再左側的工具欄中選中「コード」⇒「ルーチン」下,新建立一個class類以後編輯下面的代碼。

package routines; public class outputDataConver { public static String setName(String str) { if (!str.equals("")) { String[] ret = str.split(","); return ret[0].substring(ret[0].trim().indexOf("名前") + 4, ret[0].length()); } return ""; } public static String setSex(String str) { if (!str.equals("")) { String[] ret = str.split(","); String retVal = ""; for (int i = 0; i < ret.length; i++) { if (i == 1) { retVal = ret[1].substring(ret[1].trim().indexOf("性別") + 4, ret[1].length()).toString(); } } return retVal; } return ""; } public static String setAge(String str) { if (!str.equals("")) { String[] ret = str.split(","); String retVal = ""; for (int i = 0; i < ret.length; i++) { if (i == 2) { retVal = ret[2].substring(ret[2].trim().indexOf("年齢") + 4, ret[2].length()).toString(); } } return retVal; } return ""; } public static String setKkns(String str) { if (!str.equals("")) { String[] ret = str.split(","); String retVal = ""; for (int i = 0; i < ret.length; i++) { if (i == 3) { retVal = ret[3].substring( ret[3].trim().indexOf("経験年數") + 6, ret[3].length()) .toString(); } } return retVal; } return ""; } public static String setMyk(String str) { if (!str.equals("")) { String[] ret = str.split(","); String retVal = ""; for (int i = 0; i < ret.length; i++) { if (i == 4) { retVal = ret[4].substring(ret[4].trim().indexOf("最寄駅") + 5, ret[4].length()).toString(); } } return retVal; } return ""; } public static String setLebel(String str) { if (!str.equals("")) { String[] ret = str.split(","); String retVal = ""; for (int i = 0; i < ret.length; i++) { if (i == 5) { retVal = ret[5].substring( ret[5].trim().indexOf("日本語レベル") + 8, ret[5].length()).toString(); } } return retVal; } return ""; } public static String setSkill(String str) { if (!str.equals("")) { String[] ret = str.split(","); String retVal = ""; for (int i = 0; i < ret.length; i++) { if (i == 6) { retVal = ret[6].substring(ret[6].trim().indexOf("スキル") + 5, ret[6].length()).toString(); } } return retVal; } return ""; } public static String setGysyr(String str) { if (!str.equals("")) { String[] ret = str.split(","); String retVal = ""; for (int i = 0; i < ret.length; i++) { if (i == 7) { retVal = ret[7].substring(ret[7].trim().indexOf("業種") + 3, ret[7].length()).toString(); } } return retVal; } return ""; } public static String setCost(String str) { if (!str.equals("")) { String[] ret = str.split(","); String retVal = ""; for (int i = 0; i < ret.length; i++) { if (i == 8) { retVal = ret[8].substring( ret[8].trim().indexOf("但願単価") + 3, ret[8].length()) .toString(); } } return retVal; } return ""; } public static String setKsy(String str) { return str; } }

以後在控件「tMap」當中進行調用及匹配。

 

最終結果顯示以下:

  

相關文章
相關標籤/搜索