Kettle
简单,呵呵
刚刚看的教程

解决方案 »

  1.   

    或者就是
    字符操作,加jdbc
      

  2.   


     private final static String ADD_GRTXL = "insert into t_app_grtxl(ID, F_NAME,F_EMAIL,F_HOMEADDR,F_HOMECODE,F_HOMEPHONE,F_OFFICEADDR, F_OFFICECODE,F_OFFICEPHONE, F_COMPANY,F_ZHIWU) values(?,?,?,?,?,?,?,?,?,?,?)";
     public String csv2oa() throws FileNotFoundException,IOException {    
            Context context = ContextFactory.getContext();
      
            File file=null;
            BufferedReader br=null;
                  String path="D:\\test.csv";
                       try {
             file=new File(path);
             br=new BufferedReader(new InputStreamReader(
                    new FileInputStream(file)));
            String line=null;
            while ((line=br.readLine())!=null) {//读取一行
              
             
                  String[] parts=line.split(",");
               
               if(parts[0].equals("姓名")||parts[0].equalsIgnoreCase("name")) {
                   continue;
               }
               
               
               String homeaddr=parts[6]+parts[5]+parts[3]+parts[2];
               System.out.println(homeaddr);
              List paramlist=new ArrayList();
           
              paramlist.add(Access.getUUID());
              paramlist.add(parts[0]);
              paramlist.add(parts[1]);
              paramlist.add(parts[6]+parts[5]+parts[3]+parts[2]);
              paramlist.add(parts[4]);
              paramlist.add(parts[7]);
              paramlist.add(parts[12]+parts[11]+parts[9]+parts[8]);
              paramlist.add(parts[10]);
              paramlist.add(parts[13]);
              paramlist.add(parts[14]);
              paramlist.add(parts[15]);
              // LinkedHashMap paramap=new LinkedHashMap();
               //paramap.put("t_app_grtxl", grtxl);
               boolean isOK=Access.executeUpdate(ADD_GRTXL, paramlist);
               if(!isOK) {
              //if(!Access.executeUpdate(ADD_GRTXL, paramlist)) {
                   context.setMessage("通讯录保存失败,请再试一次");
                   return "error";
               }
           }
               
            
            
            }
           
           finally {
               if (br != null) {
                   br.close();
        
            }
           }
            
            return "success";
            
        }这是我的导入代码,如果csv的列没有空值,可以实现导入数据库功能,如果我需要csv文件中允许空值,应该怎么改呢
      

  3.   

    // 如果是字符串
    public String convertNullToBlank(String target) {
        if (target == null) {
             return " ";
        }
        return target;
    }
    // 如果是数字
    public String convertNullToZero(String target) {
        if (target == null) {
             return "0";
        }
        return target;
    }// 写入的时候调用
              paramlist.add(convertNullToBlank(parts[0]));
              paramlist.add(convertNullToBlank(parts[1]));
              paramlist.add(convertNullToBlank(parts[6])+convertNullToBlank(parts[5])+convertNullToBlank(parts[3])+convertNullToBlank(parts[2]));
              paramlist.add(convertNullToBlank(parts[4]));
              paramlist.add(convertNullToBlank(parts[7]));
              paramlist.add(convertNullToBlank(parts[12])+convertNullToBlank(parts[11])+convertNullToBlank(parts[9])+convertNullToBlank(parts[8]));
              paramlist.add(convertNullToBlank(parts[10]));
              paramlist.add(convertNullToBlank(parts[13]));
              paramlist.add(parts[14]);
              paramlist.add(parts[15]);
      

  4.   

    我觉得这样不行,对null值的处理应该在line.split()或者类似的处理方法里进行
      

  5.   

    Apache有个开源工具包,POI,看下好了
      

  6.   

    你现在是null变成了""造成你插入失败
    那把null专成" "就可以了 
    oracle里,null==''
      

  7.   

    // 如果是字符串
    public String convertNullToBlank(String target) {
        if (target == null || target.length == 0) {
             return " ";
        }
        return target;
    }
    // 如果是数字
    public String convertNullToZero(String target) {
        if (target == null || target.length == 0) {
             return "0";
        }
        return target;
    }
      

  8.   

    导出到csv文件又该如何做呢,这个偶就不太会了
      

  9.   

        /**
         * 导出CSV文件
         * 
         * @param booklist
         */
        private boolean exportCSV(Vector booklist)
        {// 说明:booklist为从数据库中取出的的数据集合,每一条记录为一个Vector对象,Vector对象以HashMap形式存放数据,key为数据库字段
    //(如:数据库字段为name,那么key就为name,值为数据库该字段的数据值)
            System.out.println(" ==== 导出CSV文件 开始 ==== ");
    //列举两个字段,其余自己添加
            String row = "姓名,电子邮件地址";
            FileWriter fileWriter = null;
            PrintWriter out = null;                // 取得系统参数的路径
    String filePath = "C:book.csv";
            try
            {
                fileWriter = new FileWriter(filePath);            out = new PrintWriter(fileWriter);
                // 输出头文件
                out.println(row);
                Hashtable book = null;
                for (int i = 0; i < booklist.size(); i++)
                {
                    row = "";
                    book = (Hashtable) booklist.get(i);
                    // 姓名,
                    // email邮箱
                    row += book.get("name") + ",";
                    row += book.get("email") + ",";                // 输出数据文件
                    out.println(row);
                    out.flush();
                }
                out.close();
                fileWriter.close();        }
            catch (IOException e)
            {
                System.out.println(" 文件路径不正确 当前目录:" + filePath);
                e.printStackTrace();
                return false;
            }        System.out.println(" ==== 导出CSV文件 结束 ==== ");
            return true;    }
      

  10.   

    还是有些地方 不懂???
    有源码没给我发一份
    [email protected]