zoukankan      html  css  js  c++  java
  • CSV上传数据

    cvs操作类

    package src.imp;
    
    import com.alibaba.fastjson.JSON;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    /**   
     * CSV操作(导出和导入)
     *
     * @version 1.0 Jan 27, 2014 4:30:58 PM   
     */
    public class CSVUtils<T> {
    
        private Class<T> tClass;
    
        private final String filePath;
    
        public CSVUtils(String filePath){this.filePath = filePath;}
    
        /**
         * 导出
         * 
         * @param file csv文件(路径+文件名),csv文件不存在会自动创建
         * @param dataList 数据
         * @return
         */
        public boolean exportCsv(File file, List<String> dataList){
            boolean isSucess=false;
    
            
            FileOutputStream out=null;
            OutputStreamWriter osw=null;
            BufferedWriter bw=null;
            try {
                out = new FileOutputStream(file);
                osw = new OutputStreamWriter(out);
                bw =new BufferedWriter(osw);
                if(dataList!=null && !dataList.isEmpty()){
                    for(String data : dataList){
                        bw.append(data).append("
    ");
                    }
                }
                isSucess=true;
            } catch (Exception e) {
                isSucess=false;
            }finally{
                if(bw!=null){
                    try {
                        bw.close();
                        bw=null;
                    } catch (IOException e) {
                        e.printStackTrace();
                    } 
                }
                if(osw!=null){
                    try {
                        osw.close();
                        osw=null;
                    } catch (IOException e) {
                        e.printStackTrace();
                    } 
                }
                if(out!=null){
                    try {
                        out.close();
                        out=null;
                    } catch (IOException e) {
                        e.printStackTrace();
                    } 
                }
            }
            
            return isSucess;
        }
        
    
        /**
         * 导入
         * @param culumNames 字段名(与列对应)
         * @return
         */
        public List<T> importCvs(String... culumNames){
            List<String> dataList=new ArrayList<String>();
            File file = new File(filePath);
    
            BufferedReader br=null;
            try {
                br = new BufferedReader(new FileReader(file));
                String line = "";
                while ((line = br.readLine()) != null) {
                    dataList.add(line);
                }
            }catch (Exception e) {
            }finally{
                if(br!=null){
                    try {
                        br.close();
                        br=null;
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
    
            List<T> allData = parseListT(dataList, culumNames);
            return allData;
        }
    
        private List<T> parseListT(List<String> dataList, String[] culumNames) {
            List<T> allData = new ArrayList<>();
            if(dataList!=null && !dataList.isEmpty()){
                for(String data : dataList){
                    String[] culums = data.split(",");
                    Map<String, String> oneObjectMap = new HashMap<>();
                    for (int i = 0; i < culumNames.length; i++) {
                        oneObjectMap.put(culumNames[i], culums[i]);
                    }
                    T t = JSON.parseObject(JSON.toJSONString(oneObjectMap), tClass);
                    allData.add(t);
                }
            }
            return allData;
        }
    
    }
    

    测试类

    
    package src.geym.ch2;
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import com.alibaba.fastjson.JSON;
    import com.sun.tools.internal.xjc.reader.xmlschema.bindinfo.BIConversion;
    import org.junit.Test;
    import src.imp.CSVUtils;
    import src.imp.User;
    
    /**
     * CSV操作(导出和导入)
     * 
     * @version 1.0 Jan 27, 2014 4:17:02 PM
     */
    public class CsvTest {
    
    
        /**
         * CSV导出
         * 
         * @throws Exception
         */
        @Test
        public void importCsv()  {
            CSVUtils<User> csvUtils = new CSVUtils("/Users/sean/iCloud 云盘(归档)/Desktop/java-web/workspace/prj_src/src/main/resources/ljq.csv");
            String[] titile = {"id", "age", "name"};
            List<User> users = csvUtils.importCvs( titile);
            System.out.println(JSON.toJSONString(users));
        }
        
        
    }
    
    

    用户

    package src.imp;
    
    /**
     * TODO
     *
     * @author sean
     * @date 2020/4/2 6:39 PM
     */
    public class User{
        private String id;
        private String age;
        private String name;
    
        public User(String id, String age, String name) {
            this.id = id;
            this.age = age;
            this.name = name;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getAge() {
            return age;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
    
  • 相关阅读:
    wex5 实战 框架拓展之2 事件派发与data刷新
    wex5 实战 框架拓展之1 公共data组件(Data)
    wex5 实战 HeidiSQL 导入Excel数据
    wex5 实战 手指触屏插件 hammer的集成与优劣
    wex5 实战 登陆帐号更换与用户id一致性
    wex5 实战 用户点评与提交设计技巧
    wex5 实战 省市县三级联动与地址薄同步
    wex5 实战 wex5与js的组件关系与执行顺序(父子与先后)
    wex5 实战 单页模式下的多页面数据同步
    [BZOJ]4237: 稻草人
  • 原文地址:https://www.cnblogs.com/sean-zeng/p/12622490.html
Copyright © 2011-2022 走看看