做积极的人,而不是积极废人!
每天更新文章,每天掉亿点点头发...
如题,这个小玩意,就是不限制你查的是哪张表,用的是什么类。
我直接一把梭,嘎嘎给你一顿导出。
我知道,这是很多人都想过的, 至少我就收到很多人问过我这个类似的问题。
我也跟他们说了,但是他们就是不动手,其实真的很简单。
不动手怎么办?我出手呗。
不多说开搞 。
玩法很简单,我之前有写过一篇利用csv文件内容格式做excel文件导出的。
如果没有看过的,还等什么,现在就去看看:
SpringBoot 那年我双手插兜,手写一个excel导出
要实现的效果 :
类是不确定的 ,User ?Student ? District ? 不确定。
但是呢我们封装出来的函数,要足够支撑不同的类,我们自动去读取遍历list ,然后导出生成文件。
核心的思路是什么 ?
其实就还是利用csv文件的内容格式本质 ,看这两幅图 :
反射一手,拿出里面的属性名, 做第一行表格行标题名称拼接。
因为类不确定,那么我们就采取反射把类全部字段属性作为key丢到map里面,同时把值丢到value里面。
这样我们拼接内容的时候只需要根据map 嘎嘎一顿遍历 拼接即可。
1.依赖
2. 核心的工具类,函数我都封装好了
MyCsvFileUtil.java
代码注意点(各种小封装):
类转map
反射转map 取字段属性名 拼接 标题
针对 转化成 ,然后拼接excel内容
测试代码:
看看效果:
导出的excel文件内容:
接下来换个类玩玩:
然后导出看看效果:
可以看到数据导出也是OK的:
没错就是这么简单, 当然也是抛转引玉, 希望大家看了这篇文章,可以借鉴这些反射的函数玩法,做更多的好玩的封装,比如加上一些自定义注解的解析,比如加上一些前后置拦截器拓展等等。
上面的示例中导出的表头是属性名,如果正式的导出通常需要自定义表头名称,我们这里可以使用自定义注解来完成。
JcExcelName.java
然后在想导出的类里面,想加看得懂的名字就加,不加就拿属性名:
随手再写一个 ,新的反射解析拿字段属性注解值函数:
然后根据解析出来的注解值列名拼接 表格标题名格式:
测试看看效果:
效果嘎嘎好:
然后反手就搞到我们前面的文章使用例子里面:
执行一下示例接口,看看效果:
文件出来了:
打开看看效果:
好了,就到这吧,非常完美。
领取专属 10元无门槛券
私享最新 技术干货