Apache poi XSSF工作簿poi:将图像IOUtils添加到字节数组未定义错误

Apache poi XSSF工作簿poi:将图像IOUtils添加到字节数组未定义错误,apache-poi,xssf,Apache Poi,Xssf,使用POI:XSSF将图像插入excel的步骤 我正在使用maven poi依赖项: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.8</version> </dependency> 我发现以下错误: 1类型IOUtils的toByteA

使用POI:XSSF将图像插入excel的步骤 我正在使用maven poi依赖项:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.8</version>
</dependency>
我发现以下错误:

1类型IOUtils的toByteArrayInputStream方法未定义 2图片类型PNG无法解析或不是字段


任何帮助都将受到感谢。谢谢。

将评论升级为答案:

您想要使用的方法在ApachePOI3.11中有很多介绍,您可以在中看到关于它的详细信息

如上所述,在poi ooxml上定义Maven依赖项将引入主poi组件jar,这是IOUtils类所在的位置,因此bit很好

在本例中,基于注释的是类路径上第二个较旧的POI副本。您需要删除这个旧的POI jar或POI jar,这与大多数Java项目一样,只有当所有POI jar都来自同一版本,并且没有旧的POI jar时,Apache POI才能正常工作

因为这是一个相当普遍的问题——例如,许多框架都提供POI的旧副本——所以存在一个问题。如果手工找不到旧jar,可以使用这里给出的代码来确定将旧jar移除的位置


另外,还有一件事需要记住——许多项目都提供了一个名为IOUtils的类——确保导入代码的类是org.apache.poi.util.IOUtils,而不是其他类

你能分享完整的堆栈跟踪吗?你为什么要依赖这样一个老版本的ApachePOI?如果改为指定3.11,会发生什么情况?最新的马厩version@Gagravarr字体你试过3.11吗?你用过XSSF吗?@AnkurPiyush:这是一个编译错误。类型的toByteArrayInputStream方法未定义IOUtils@guest我和其他很多人一起,在没有问题的情况下使用POI 3.11和XSSF。POI-contrib2.5.1-final也会出现在POI 3.11中吗?
 InputStream my_banner_image = new FileInputStream("input.png");
 byte[] bytes = IOUtils.toByteArray(my_banner_image);
 int my_picture_id = wb.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);