加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java导出生成csv文件的方法

发布时间:2020-12-14 14:35:05 所属栏目:Java 来源:网络整理
导读:首先我们需要对csv文件有基础的认识,csv文件类似excel,可以使用excel打开,但是csv文件的本质是逗号分隔的,对比如下图: txt中显示: 修改文件后缀为csv后显示如下: 在java中我们一般使用poi操作excel,导入,导出都可以,但是poi很消耗内存,尤其在导出

首先我们需要对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("rn");
    //写内容
    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("rn");
    }
    ow.flush();
    ow.close();
    return "0";
  }

测试类如下:

public void test() throws IOException,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);
  }

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读