首页 > 编程 > Java > 正文

java导出生成csv文件的方法

2019-11-26 13:17:07
字体:
来源:转载
供稿:网友

首先我们需要对csv文件有基础的认识,csv文件类似excel,可以使用excel打开,但是csv文件的本质是逗号分隔的,对比如下图:

txt中显示:

修改文件后缀为csv后显示如下:

在java中我们一般使用poi操作excel,导入,导出都可以,但是poi很消耗内存,尤其在导出时,这个时候我们其实可以选择导出生成csv文件,因为其跟文本差不多,所以效率很高。

简单写了一个实现类,代码如下:

/**   *          *         导出生成csv格式的文件   * @author     ccg   * @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("d://test.csv");    //构建输出流,同时指定编码    OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream(file), "gbk");        //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";  }

测试类如下:

public void test() throws IOException, IllegalArgumentException, IllegalAccessException{    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);    CsvUtil.getInstance().exportCsv(titles,propertys, list);  }

导出后生成的文件跟上图一样,算是一个封装吧,传入表头,以及表头对应实体的属性即可,注意要一一对应。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表