XSSFWorkbook poi:添加图像IOUtils toByteArray未定义的错误

时间:2015-02-09 21:56:08

标签: apache-poi xssf

使用POI:XSSF将图像插入Excel 我正在使用maven poi依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.8</version>
</dependency>

AND代码为:

 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);

我收到了这些错误:

1)对于IOUtils类型,未定义toByteArray(InputStream)方法 2)PICTURE_TYPE_PNG无法解析或不是字段

任何帮助都会得到满足。感谢。

1 个答案:

答案 0 :(得分:0)

宣传回答评论:

您想要使用的方法非常适用于Apache POI 3.11,您可以在POI Javadocs中查看有关它的完整详细信息。

详细说明POI Components page,在poi-ooxml上定义Maven依赖关系会引入主poi组件jar,这是IOUtils类所在的位置,所以这一点很好< / p>

在这种情况下你所拥有的(根据评论)是你的类路径上的第二个较旧的POI副本。您需要删除这个旧的POI jar(或POI jar),与大多数Java项目一样,如果所有POI jar都来自同一版本,并且没有旧版本,那么Apache POI将只能正常工作。

因为这是一个相当普遍的问题 - 很多框架都会发送POI的旧副本 - 例如POI FAQ entry on this very thing。如果您无法手动找到旧罐子,您可以使用那里给出的代码来找出旧罐子将其移除的位置。

另外,还要记住另一件事 - 许多项目提供了一个名为IOUtils的类 - 确保您导入代码的那个是org.apache.poi.util.IOUtils而不是其他东西!