记一次导出踩坑

325 阅读2分钟

最近做导入导出功能,用hutool工具发现一个坑,这里记录下,当使用hutool工具里的excel工具类

cn.hutool.poi.excel.ExcelUtil.getBigWriter();

这个方法时,而当你的项目里正好引用的是这些版本时

 5.5.7  hutool.all  3.8 poi 

 5.8.18 hutool.all   3.8 poi

当执行到上面那行代码的时候,你的日志打印框大概率会输出这么一段话

org.apache.poi.ss.usermodel.CellStyle.setAlignment(Lorg/apache/poi/ss/usermodel/HorizontalAlignment;)V

而当你的组合是这个的时候

5.8.18 hutool.all   3.17 poi

执行到下面这行代码的时候

bigWriter.write(sheet.getCollection(), true);

你的日志框大概率会打印出这么一段话

 org.apache.poi.ss.usermodel.Cell.getCellType()Lorg/apache/poi/ss/usermodel/CellType;

以上两个问题后面这个是我碰到的,网上搜索的时候大多说人也碰到过,给出的答案基本都是让把poi版本升级到4.0.0以上即可,当然这种方案是可以的,但是当公司有些项目中引用复杂或者无法更改版本的时候就很头痛了,而且当我升级poi版本的时候,项目中以前写的导出相关引用竟然报错了,为了保险起见,对于这种错乱的使用范围比较广的依赖能不改尽量别改了,省的到时候成背锅侠,所以就有了后面的故事,重新创建一个新项目,然后专门测试了这些版本的组合,其中这个错误就是测试测出来的,这个东西真的有点恶心了,希望hutool能早日修正吧

org.apache.poi.ss.usermodel.CellStyle.setAlignment(Lorg/apache/poi/ss/usermodel/HorizontalAlignment;)V

最后,我把我测试过能用的组合发布出来,以防其他人在碰到此问题的时候再踩坑

* 5.5.7  hutool.all  3.17 poi
*
* 5.8.18 hutool.all  4.0.0 poi

这两个版本是可以成功的,可以根据具体项目引入的jar包版本去修改,最好的就是兼容以前的旧代码,防止以前上线的导出报错

最后,还是要送上一位名人曾说的一句话:手上没有剑和有剑不用是两回事!