zoukankan      html  css  js  c++  java
  • talend工具通过关键字来取得text文本中的数据

    问题描述:

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

    解决方法:

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

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

    选择tjava_2之后再「コンポーネント」里面编辑Java代码。并且在「Conexts」里面可以设定参数[context],在下面的代码当中最重要的代码是[

    context.txtStr = strBuData.toString();

    row1.txtStr = context.txtStr;]

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

    最终结果显示如下:

      

  • 相关阅读:
    [erlang 002]gen_server中何时会跑到terminate函数
    设计模式:桥接模式
    设计模式:组合模式
    Harbor:镜像上传和下载
    Harbor:简介和安装
    Docker:compose
    ThinkPHP的静态化页面方法
    php使用memcached详解
    大话PHP设计模式
    PHP魔术方法使用
  • 原文地址:https://www.cnblogs.com/killclock048/p/9173274.html
Copyright © 2011-2022 走看看