1.下载jar包
下载地址:https://poi.apache.org/download.html#POI-4.1.2
2.放入项目中,删除老的jar包
3.解决报错
替换上图6个jar包完会报两种错,一种代码直接报错,一种调用原来功能报错
- 代码直接报错解决方法(部分)
报错 | 替换 | 注释 |
---|---|---|
HSSFCellStyle.ALIGN_CENTER | HorizontalAlignment.CENTER | 居中 |
Cell.CELL_TYPE_NUMERIC | CellType.NUMERIC | 类型对应的值:0 |
Cell.CELL_TYPE_STRING | CellType.STRING | 类型对应的值:1 |
Cell.CELL_TYPE_FORMULA | CellType.FORMULA | 类型对应的值:2 |
Cell.CELL_TYPE_BLANK | CellType.BLANK | 类型对应的值:3 |
Cell.CELL_TYPE_BOOLEAN | CellType.BOOLEAN | 类型对应的值:4 |
Cell.CELL_TYPE_ERROR | CellType.ERROR | 类型对应的值:5 |
- 调用原来功能报错
因为老的poi3.8还需要多个apache-comons-xxx.jar的jar包支持,所以要替换apache-commons的jar包来与目标版本4.1.2相对应,可以在https://mvnrepository.com/查找对应的jar包
这步骤比较麻烦,但基本可以凭报错信息中,根据类的包名找到需要下载的jar包,如:
其他commons-xxx.jar包替换类似
4.奇葩报错:NoSuchFieldError:LFH_SIG
- 有些不知道原来的jar包是哪个,虽然下载对应的版本了,但是没删除原来的jar包,也会报错,比如:
可能你已经下载了commons-compress正确的jar包,但是还报错,这个时候,怎么找原来老版本的commons-compress的jar包显得至关重要;
怎么办呢?
(1)往下看找到最近的报错地方
(2)利用eclipse的CTRL+T功能
此功能是搜索类,不同于CTRL+R只能搜索项目中的我们自己写的类,CTRL+T还能搜索jar包中的类,选中类,会提示来自哪个jar包
在输入org.apache.commons.compress.archiver时,查看提示的类中有一个ArchiverFactory类,此类对应的jar包不是commons-compress-1.20.jar;而是apache-jakarta-commons-compress.jar;尝试删除apache-jakarta-commons-compress.jar,删除后问题解决