使用POI导入Excel表格时出现:org.apache.poi.poifs.filesystem.OfficeXmlFileException

使用POI在导入Excel文件时报错:

org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)
        该错误意思是说,文件中的数据是用Office2007+XML保存的,而现在却调用OLE2 Office文档处理,应该使用POI不同的部分来处理这些数据,比如使用XSSF来代替HSSF。

如果只是支持Excel2003的话,需要导入的poi包只需要: 

  • dom4j-1.6.1.jar 
  • poi-3.8-20120326.jar 

或者Maven中导入如下依赖:

<!--xls-->
<dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.9</version>
</dependency>

如果只是支持Excel2007的话,需要导入的poi包只需要: 

  • dom4j-1.6.1.jar 
  • poi-ooxml-3.8-20120326.jar

或者在Maven中导入:

 <!--xlsx(07)-->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.9</version>
    </dependency>

如果是2003版及之前的,创建工作簿的时候使用:HSSFWorkbook workbook = new HSSFWorkbook();相应的之后在创建表格,行,单元格时使用:HSSFSheet sheet 、HSSFRow row、HSSFCell cell。
如果是是2007版,创建工作簿的时候使用:  XSSFWorkbook workbook = new XSSFWorkbook();相应的之后在创建表格,行,单元格时使用:Sheet sheet、Row row、Cell  cell。

我用的是HSSFWorkbook,之后导入了一个另存为.xls的问题就解决了。

参考文章: 
1.http://my.oschina.net/u/658145/blog/268112 
2.http://blog.csdn.net/mmm333zzz/article/details/7962377 

发布了166 篇原创文章 · 获赞 585 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/zxdspaopao/article/details/103486120