博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用注解实现 bean 转 csv
阅读量:4361 次
发布时间:2019-06-07

本文共 2295 字,大约阅读时间需要 7 分钟。

csv 文件是 

aaa,bbb,ccc

aaa,bbb,ccc

保存

这里的要求是 List<T> 线性表的类型 转换成 类别似 html 中 table的格式,即第一行是 head 后面是 body

使用注解的效果例如以下 :

List
users=new ArrayList
(); users.add(new User("刘夏楠", 23, "男")); users.add(new User("刘夏楠", 23, "男")); users.add(new User("刘夏楠", 23, "男")); writeBeanToCsvFile("D:\\test.csv", users);

csv文件:

当中bean user 例如以下:

package bean;import annotation.csvField;public class User {		@csvField("姓名")	private String name;	@csvField("年龄")private Integer age;	private String sex;			public User(String name, Integer age, String sex) {		super();		this.name = name;		this.age = age;		this.sex = sex;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public Integer getAge() {		return age;	}	public void setAge(Integer age) {		this.age = age;	}	public String getSex() {		return sex;	}	public void setSex(String sex) {		this.sex = sex;	}		}

达到的效果就是

拥有 @csvField 注解的字段才会被 写入csv文件

而且 @csvField 的值作为csv文件的 title 即 第一行

我们使用反射来达到这个效果

bean 转 List<String[]> 例如以下:

private static 
List
getStringArrayFromBean(List
beans) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{ if(beans.size()<1) throw new IllegalArgumentException("长度不能小于1"); List
result=new ArrayList
(); Class
cls=beans.get(0).getClass();//获取泛型类型 Field[] declaredFields=cls.getDeclaredFields(); List
annoFields=new ArrayList
(); for(int i=0;i
然后使用 csv 的一个工具包 javacsv.jar来写入csv文件

public static 
void writeBeanToCsvFile(String csvFilePath,List
beans) throws IOException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{ File file =new File(csvFilePath); if(!file.exists()){ //假设文件不存在,创建文件 file.createNewFile(); } CsvWriter wr =new CsvWriter(csvFilePath,',', Charset.forName("GBK")); List
contents=getStringArrayFromBean(beans); for(String[] each:contents){ wr.writeRecord(each); } wr.close(); }

版权声明:本文博客原创文章,博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/hrhguanli/p/4643298.html

你可能感兴趣的文章
20190823 顺其自然
查看>>
阅读《余生有你,人间值得》有感
查看>>
每日英语
查看>>
SpringCloud+feign 基于Springboot2.0 负载均衡
查看>>
【BZOJ5094】硬盘检测 概率
查看>>
大庆金桥帆软报表案例
查看>>
Proxy模式
查看>>
读书多些会怎样
查看>>
浏览器好用的技术
查看>>
HDU 2188------巴什博弈
查看>>
tp5任务队列使用supervisor常驻进程
查看>>
Xmind?
查看>>
spring+quartz 实现定时任务三
查看>>
day2-三级菜单
查看>>
linux下升级4.5.1版本gcc
查看>>
Beanutils
查看>>
FastJson
查看>>
excel4j
查看>>
Thread
查看>>
char * 与char []探究理解
查看>>