talend工具通过关键字来取得text文本中的数据

问题描述:

在文件夹中有多个text文本,通过关键字来取得text文本里面我所需要的数据,并出力到Excel里面。取得的数据,在text文本里面可能是多行的存在,并且在Excel里面是一行的存在。

解决方法:

解决方法,在talend工具里面加入控件「tjava」,之后写入java代码来读取text文本文件,之后利用stringBuffer来处理成字符串的形式,在此阶段把text文本里面的多行数据形成一行之后向下一个阶段传值。

下图是用talend工具画的示意图

选择tjava_2之后再「コンポーネント」里面编辑Java代码。

              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代码所需要的包文件。

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」当中进行调用及匹配。

最终结果显示如下:

  

猜你喜欢

转载自www.cnblogs.com/killclock048/p/9173274.html
今日推荐