近期有个自定义报表的需求,自动维护一张大宽表数据池,报表的数据都从这个表取,用户可以配置报表所需要的字段,然后可以支持导出,所以导出也需要自定义,没法按EasyExcel注解方式实现。
翻遍了官方文档以及代码样例,没有找到这种自定义列的报表实现方式,各种找资料最终实现出来了,但是,不是很满意,标题自动换行了,太丑了。。。
又开始找资料,准备改写表头样式,自适应列宽
找了一篇博文,自己实现官方策略的方案,正准备cv😀,copy过来后,发现他的版本与我的不一样,好多东西已经不适用了
然后再次翻找,找到一个说有官方默认策略的博文,我一看看样子是设置所有单元格统一宽度的,不适用于我,不过我转念一想,这个自适应列宽应该是个很常见的需求,会不会官方也有这种策略的实现了,我按这个博文提供的官方类去找,果然有个LongestMatchColumnWidthStyleStrategy的实现类,最长匹配字段宽度格式策略,这不就是我要的吗!
EasyExcel.write(response.getOutputStream()).head(headList)
.sheet(result.getReportTitle())
.doWrite(dataList);
使用也简单,就在之前的写法里加个.registerWriteHandler,将使用的策略放进来就行了
EasyExcel.write(response.getOutputStream()).head(headList)
.sheet(result.getReportTitle())
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.doWrite(dataList);
最终效果:
这里是吐槽
前面我说的准备cv的那篇博文,“本博客不是写给小白的,小白可以去官网看案例”,结果他里面的策略(我准备cv的)就是直接使用的官方的LongestMatchColumnWidthStyleStrategy,变量名都一样,没有一点改动。。。我不清楚为什么不直接使用官方的,而自己新建一个类写了一个出来???
我专门去git上查看了官方的仓库里这个类的创建时间,明细是早于这个博客的时间的,排除了是这个博主自己的实现,然后贡献给了EasyExcel开源的丝丝可能,明显是copy的官方的代码!!