您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
laravel自定义excel导出合并单元格(复杂导出)
发布时间:2020-03-22 10:23:08编辑:雪饮阅读()
一般的我们导出excel都是标准的一行一列这种类型,比如订单列表、用户列表之类,然而这次客户要导出一个比较复杂的excel.在网页中展示的样式是两个表格左右排列的,每个表格有其表头(涉及到单元格合并的那种)和表表尾(涉及到单元格合并的那种)
因为我们使用的是laravel框架,我们项目中大多数导出都是用的Maatwebsite\Excel依赖.除过少数比如学员考试信息等数据量比较大且用户一次性导出的数据比较多的场景使用了给前端进行json分页的地方外,基本都是直接服务端导出的.
在这个大数据导出方案中好多人对前端导出不认同(至少目前我所接触到的),我们老大也说要用后端导出,数据量大了用异步(这个是次老大说的),我则不这样认为,你异步只是让任务异步了,但是真正的导出时候数据量过大时候还是会内存不足,加内存肯定是劣质方案,况且你还要为异步做好多异步任务相关工作,另外有些人肯定会说我可以用异步分页,那么为什么就不能直接前端分页。。。反正我不认同.
话不多说了,扯远了,那么现在就来正题.
因为我使用的是laravel框架,目前好像是5.5-5.8的某个版本,具体忘了,不过一般情况下这个影响不大.
如图所示,箭头所指的几个位置就是我们这次解决方案的关键点
其实对于这种拆分单元格的解决方案,网上还有另外一种,就是通过EXCEL静态调用create方法然后通过匿名函数自定义内部sheel对象属性的,但是这种方案在excel3.0种好像没有办法用。
然后下面的createData方法和原来的一样,只是针对你的导出样式,可能要稍微调整下.
最后要导出时候我们这里习惯用EXCEL静态调用download方法将该类实例化的对象做为参数的这种形式。
最后的最后我附上上面截图中的类
关键字词:laravel,excel,导出,单元格合并,复杂导出