之所以写博客是记录一下日常的工作,也算是技术的总结,第一次写有什么不足的欢迎大家指出。
一、先来看一下,我们要导出的需求样式。本次使用的技术是java的poi导出excel。
本次用到的工具有idea,Tomcat,Navicat,mysql数据库等等。
用的框架是mybatis和springmvc。使用的依赖有apache的poi3.9版本。你们要用别的版本也是可以像那种easyPOI。如果你不是做那种动态的。可以直接使用,就是把实体类加一个@excel注解写死表头。
二、首先要像导出动态的数据以及动态表头,我们就要分别传输数据给前端,就是使用map,里面放2个key,value。例如
这种形式返回,这样前端只需要遍历一下就可以拿到数据,对应的数据会自动跟着表头的字段显示。
三、先看一下我们数据库储存的表头,我这次的表头可以实现自定义模板和自定义列。下面会一一讲解。
这个是后台一个完整模板,用户可以自定义去修改。用户不会改动到SYS级别的模板。后续用户要自定义的话,是会再次储存一套记录在数据库中。
四、使用mybatis查询到这些表头。
我们可以根据你这个表格是什么业务,让前端传对应的数据。可以看到上面listName是业务综合,所以只要传业务综合,我们就可以查询出来一级表头。
五、二级以及三级表头。
像前面图片看到的二级头,我们是可以做动态的(包括三级头)。
先是定义一个集合,准备拿去接收数据。然后 foreach一下查询到的一级表头数据。因为我是有储存一级头的字段和字段名。所以可以直接get出来。判断是否相等,这样直接add二级表头进去。里面我有封装了一个方法。在实体类里面定义一个
这样就可以套娃了。给一级头加二级头。
六、接下来说说数据是怎么导到excel上的。
ModelAndView是Http请求过程中返回的模型和视图,具体大伙可以百度搜一下,这里就不做讲解了。
首先我们来看看这个导出excel的类有那些参数。我们需要定义一个最大行和最大列。还有一个集合用来储存表头。还有一个参数类,为了别的excel导出能够共用,就提出去了。
很多是你们不需要用到的参数。所以就不用一一讲解了,最主要的是list那个是用来储存数据的。
七、excel的创建
这边是创建一个excel,设置风格什么的,具体大家可以根据自己想要的进行修改。
因为我这个是三级表头,所以定义了一个[3][99] 三行的数组。
八、遍历表头以及数据
先要定义一个int,因为excel默认第一行是0开始的。这边的代码是先创建excel然后再填入数据,所以想要j–;一下。
九、合并excel