前言
最近项目中遇到要将MySQL数据库中的某些数据导出为Excel格式保存,在以前也写过这样的功能,这次就准备用以前的代码,但是看了一下,这次却不一样,因为在以前用到的都是导出一种或几种数据,种类不多,但是这次导出的种类比较多,相当于就是每一种类型的数据得单独写一些代码,而且重复的比较多;就想写一个通用的,不管什么种类,直接传入数据就行了;
正文
想法
因为数据的种类是不同的,里面的属性也各不相同,如何用同一段代码去处理这些不同种类的属性,让我第一时间想到了Java的泛型和反射;因为之前的笔记中就写到了反射,这时候刚好派上用场,就来实际操作一下;
代码部分
首先导入poi相应的jar包:
1 |
|
- 实体类 有两个实体类:pojoA 和pojoBB,主要是为了测试不同实体类的不同属性是否有效; pojoA:
1 |
|
pojoB:
1 |
|
- 核心代码部分 使用该类时,需要传入每列得列名,为String数组,以及数据的List集合对象;还有一个Excel的title名;其中每列自动适应宽度,这个属性得将数据存入Excel之后才能调用,如果在数据存入之前调用,则不会取作用;
1 |
|
测试
测试代码
1 |
|
总结
本篇笔记中使用了Java泛型和反射,但都是用得比较浅,只是最基础的使用;主要解决了处理数据种类繁多的的问题,不用单独处理; 其中也有很多不足之处,如下:
- 数据集合只支持List集合
- 用到了反射,速率可能比单独处理的低
- 需要手动传入列名,比较硬编码