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(); } }