前言
不知道大家有没有遇到过这种需求,导出一个统计结果,行和宽的内容都不固定,列里面还有嵌套,就如下图所示
(项目特殊要求,列和行的标题内容这边就都清掉了)
大家会不会也是绞尽脑汁呢,项目上使用的是alibaba的easyexcel工具。那今天就给大家介绍下怎么生成导出这么样一个复杂的报表。基础的easyexcel使用这边就不过多介绍。
实例
这边给大家展示项目中是如何使用easyexcel导出这个复杂的报表
如图所示外层通过response将文件通过流的模式导出到浏览器进行操作,具体的处理代码在doWrite里
接下来在dowrite中,首先配置模版,然后获取业务数据,后面就是将业务数据填充到模版对应的位置
通过handle获取业务数据这边。
在handle方法里,主要是去获取所有的业务数据,然后统一放到List
由于隐私问题。这里只给大家展示一部分。可以看到最后的list outNum就是对应着各个条件下各个城市的数量统计。
模版样式是这样子的,可以看到正常的业务数据是通过data1.的参数进行填充,这个和正常的模版导出一致。但data2.和data3往后的则是竖过来的,这个就需要调整填充模式,这个后面会详细介绍。
data1开头的是正常展示的业务数据,采用默认的填充方式。这个里面的outNum没有填充,在后面遍历的时候填充到城市下面的数据。
Data2开头的城市数据是将list的内容横向生成表头,所以采用横向填充模式,将城市列表名称一一展示成表头。
接下来展示模版里面data3往后的数据的填充。
这块内容比较复杂,首先遍历的是vos,这个是正常的业务数据,会纵向填充,这样一行一行的遍历的时候获取到条件下各个城市的指标,这个时候其实是和data2的数据对应的,所以同样修改填充模式向后填充。将各个城市的数量情况填充起来。
最后介绍一下样式调整。可以看到在模版中data2是占据着3行的,但在导出结果中其实是合并过的,这个就是用到了WriteHandler进行处理的
结尾
好了,今天就介绍到这里,有些内容可能描述的不够好,大家有什么问题可以在评论区进行留言