java快速实现导出生成csv文件(含注释代码)


java快速实现导出生成csv文件(含注释代码)

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


文本文件 -> csv

csv,即逗号分隔文件。要生成csv文件,只需生成逗号分隔的txt文件,然后修改后缀名为.csv即可。

生成的文本文件:
txt文件

修改后缀名后的.csv文件:
csv文件


实现代码

实现类

/**
   *         导出生成csv格式的文件
   * @author     https://www.jb51.net/article/102607.htm
   * @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);
  }

生成的文件就是上文这两张图


参考列表

java导出生成csv文件的方法

猜你喜欢

转载自blog.csdn.net/weixin_39591031/article/details/110849120