使用Hutool和POI读写excel中遇到的错误
报错部分:
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTFontsImpl.getXmlObjectArray(Ljavax/xml/namespace/QName;[Lorg/apache/xmlbeans/XmlObject;)[Lorg/apache/xmlbeans/XmlObject;] with root cause
java.lang.NoSuchMethodError: org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTFontsImpl.getXmlObjectArray(Ljavax/xml/namespace/QName;[Lorg/apache/xmlbeans/XmlObject;)[Lorg/apache/xmlbeans/XmlObject;
at org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTFontsImpl.getFontArray(CTFontsImpl.java:71) ~[poi-ooxml-lite-5.0.0.jar:na]
首先一定要明确的一点说,hutool版本和poi版本一定要适配,不然会出现各种各样的问题,比如让你缺失一个包然后导进去一个新的包,然后就又会出现要继续让你添加新的依赖来导入包,那是一定无法解决问题的,在确保你的远端仓库可以支持你频繁变动依赖版本的情况下,多尝试换几个版本。
比如我下方代码展示的两个版本,因为5.几版本的hutool要求poi版本需要在4.1.2或以上其他版本,但也不是鼓励大家乱改版本摸奖式来解决问题,但是笔者之前hutool使用的版本是5.7.20,poi是4.1.2也无法解决问题。所以在能用的前提下,可以参照我一下的版本来添加依赖,希望可以省去很多不必要的麻烦替你省下时间。
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.6.6</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>