JAVA List集合导出为CSV

来源:互联网 发布:查看数据库版本 oracle 编辑:程序博客网 时间:2024/06/11 08:17

由于项目中使用到了该部分功能,所以将代码贴出来,给后来人参考

1.下载Jar包

该方法需要调用一个名为javacsv.jar的包,下载地址为
http://central.maven.org/maven2/net/sourceforge/javacsv/javacsv/2.0/javacsv-2.0.jar


2.代码部分

public static <T> void writeCSV(Collection<T> dataset,String csvFilePath,String[] csvHeaders) {        try {            // 定义路径,分隔符,编码            CsvWriter csvWriter = new CsvWriter(csvFilePath, ';', Charset.forName("UTF-8"));            // 写表头            csvWriter.writeRecord(csvHeaders);            // 写内容            //遍历集合            Iterator<T> it = dataset.iterator();            while (it.hasNext()) {                T t = (T) it.next();                //获取类属性                Field[] fields = t.getClass().getDeclaredFields();                String[] csvContent=new String[fields.length];                for (short i = 0; i < fields.length; i++) {                    Field field = fields[i];                    String fieldName = field.getName();                    String getMethodName = "get"                            + fieldName.substring(0, 1).toUpperCase()                            + fieldName.substring(1);                    try {                        Class tCls = t.getClass();                        Method getMethod = tCls.getMethod(getMethodName,new Class[] {});                        Object value = getMethod.invoke(t, new Object[] {});                        if (value == null) {                            continue;                        }                    //取值并赋给数组                    String textvalue=value.toString();                    csvContent[i]=textvalue;                    //System.out.println("fieldname="+fieldName+"||getMethodname="+getMethodName+"||textvalue="+textvalue);                    }catch (Exception e) {                        e.getStackTrace();                    }                    }                //迭代插入记录                csvWriter.writeRecord(csvContent);              }            csvWriter.close();            System.out.println("<--------CSV文件写入成功-------->");        } catch (IOException e) {            e.printStackTrace();        }    }

3.测试代码

 **javaBean类**
public class StudentForTest{    private int age;     private String email;     private String name;    private String phone;    private String sex;    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getEmail() {        return email;    }    public void setEmail(String email) {        this.email = email;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPhone() {        return phone;    }    public void setPhone(String phone) {        this.phone = phone;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }}

Main方法

public static void main(String[] args) {        StudentForTest s=new StudentForTest();        s.setAge(21);        s.setEmail("11");        s.setName("yaochongwei");        s.setPhone("157");        s.setSex("1");        StudentForTest s1=new StudentForTest();        s1.setAge(22);        s1.setEmail("11");        s1.setName("yaochongwei");        s1.setPhone("157");        s1.setSex("0");        List<StudentForTest> l=new ArrayList<StudentForTest>();        l.add(s);        l.add(s1);        String csvFilePath = "D://yaochongwei.csv";        String[] csvHeaders = { "年龄", "邮件", "姓名","手机","性别" };        writeCSV(l,csvFilePath,csvHeaders);    }