java导出生成csv文件的方法

网友投稿 275 2023-06-19


java导出生成csv文件的方法

首先我们需要对csv文件有基础的认识,csv文件类似excelDkQrT,可以使用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 String exportCsv(String[] titles,String[] propertys,List 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 list = new ArrayList();

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

}

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java web中使用cookie记住用户的账号和密码
下一篇:微信小程序 slider 详解及实例代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~