java生成CSV格式

package com.qyb.csv;


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.lang.reflect.Field;
import java.util.List;


public class CsvUtil {
    private static CsvUtil csvUtil;
    
    public static CsvUtil getInstance(){
        if(csvUtil==null){
            csvUtil=new CsvUtil();
        }
        return csvUtil;
    }
    /**
     *             
     *                 导出生成csv格式的文件
     * @author         qyb
     * @param          titles csv格式头文
     * @param          propertys 需要导出的数据实体的属性,注意与title一一对应
     * @param          list 需要导出的对象集合
     * @return
     * @throws         IOException
     * Created         2017年1月5日 上午10:51:44
     * @throws         IllegalAccessException 
     * @throws         IllegalArgumentException 
     */
    public static <T> String exportCsv(String[] titles,String[] propertys,List<T> list) throws IOException, IllegalArgumentException, IllegalAccessException{
        File file = new File("E:\\test.csv");
        //构建输出流,同时指定编码
        OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream(file), "utf-8");
        
        //csv文件是逗号分隔,除第一个外,每次写入一个单元格数据后需要输入逗号
        for(String title : titles){
            ow.write(title);
            ow.write(",");
        }
        //写完文件头后换行
        ow.write("\r\n");
        //写内容
        for(Object obj : list){
            //利用反射获取所有字段
            Field[] fields = obj.getClass().getDeclaredFields();
            for(String property : propertys){
                for(Field field : fields){
                    //设置字段可见性
                    field.setAccessible(true); 
                    if(property.equals(field.getName())){
                        ow.write(field.get(obj).toString());
                        ow.write(",");
                        continue;
                    }
                }
            }
            //写完一行换行
            ow.write("\r\n");
        }
        ow.flush();
        ow.close();
        return "0";
    }

}

package com.qyb.csv;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;


public class Export {

    @SuppressWarnings("static-access")
    public void test() {
        String[] titles = new String[]{"ID","姓名"};
        String[] propertys = new String[]{"id","name"};
        List<User> list = new ArrayList<User>();
        User user;
        user = new User();
        user.setId(1L);
        user.setName("张三");
        list.add(user);
        user = new User();
        user.setId(2L);
        user.setName("李四");
        list.add(user);
        try {
            CsvUtil.getInstance().exportCsv(titles,propertys, list);
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        
            new Export().test();
        
    }
}

 

 

 

posted @ 2017-01-11 14:26  蚂蚁总督  阅读(447)  评论(0编辑  收藏  举报