背景
经常做管理系统的同学,可能会遇到频繁的Excel导出功能, 每次开发类似功能都会或多或少的写一些重复性的代码,没有一点成就感。之前有很多同学也问过我实现的逻辑,也聊过如何实现。由于自己比较懒,没有动手去写写代码。
由于最近两周写了两次了,频率有点高。所以现在就不得不写一个通用的导出功能,避免以后在作重复的工作!
实现逻辑
- 在已经查询出来要导出的数据集合(LIst<Object>)中,以第一个类为模板取出
通过反射,在取出的模板中拿到了各个属性名,将其作为excel的表头。
- 拼接正文
因为我们的类不确定,只能通过反射去获取值。如上面,我们通过反射获取的类的字段属性。同理,我们在这将类的属性作为key,值作为value,将推到map集合中。
这样我们就将所有的内容拼接到了map集合中。循环遍历操作即可(这里未作数据两考虑,之说实现,后续可自行优化)
扩展优化
我们上面的功能实现导出后,表头显示的是类的字段名,那么我们怎么去实现我们想要的中文名表头呢?
其实也是比较简单的,我们可以通过注解来实现。定义一个注解,设置一个属性来标记中文表头,将注解使用在我们类的字段属性,以用来标记这个字段的表头含义,然后在转化拼接表头的时候通过反射拿到注解中的中文,这样即可完成我们的整体导出功能
这篇文章因为文字段被标记为质量低,以下文字就是为了打破它的文字段而造成的质量低!
相信和我一样遇到这个问题的的小伙伴们,心里也已经暗自问候了这个产品经理的祖总十八代了吧!
算法实在是不敢苟同,文字的长短和文章的质量有毛线的关系吗?
欢迎点击下方卡片,关注《coder练习生》