博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于POI解析Excel文件(03和07版本不同)的问题
阅读量:5322 次
发布时间:2019-06-14

本文共 909 字,大约阅读时间需要 3 分钟。

问题描述:在使用poi包进行excel解析时,发现对Excel2003以前(包括2003)的版本没有问题,但读取Excel2007时发生如下异常:

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

原因分析:XSSF不能读取Excel2003以前(包括2003)的版本,如果遇到2007版本的Excel文件就需要在读取前判断文件是2003前的版本还是2007的版本,然后对应调用HSSF或XSSF来读取。

解决方式:目前只能通过后缀名来判断文件版本,代码如下:(如果有高手知道别的解决方法,请告知,谢谢!)

1 public static boolean isExcel2003(String filePath)  2 {  3   4     return filePath.matches("^.+\\.(?i)(xls)$");  5 6 }

获得版本号之后,根据版本号的不同创建不同的对象,代码如下:

1 /** 根据版本选择创建Workbook的方式 */   2    3 Workbook wb = null;   4    5 if (isExcel2003)   6 {   7    wb = new HSSFWorkbook(inputStream);   8 }   9 else  10 {  11    wb = new XSSFWorkbook(inputStream);  12 }

 

转载于:https://www.cnblogs.com/handsomeye/p/5172058.html

你可能感兴趣的文章
VMware虚拟机上centos安装
查看>>
maven setting.xml
查看>>
Java资源大全中文版(Awesome最新版)
查看>>
Dom4j的使用(全而好的文章)
查看>>
Vivatesting
查看>>
JDBC自动生成主键值
查看>>
Delphi XE8帮助中的REST相关内容。
查看>>
结构和其他数据形式
查看>>
1045. Funny Game
查看>>
发送xml数据
查看>>
WordPress菜单函数wp_nav_menu()详细介绍
查看>>
虚拟磁盘和卷管理
查看>>
10.find
查看>>
FCKeditor V2.6 属性设置及优化
查看>>
input,textear 水印实现【原创】
查看>>
Windows使用小技巧
查看>>
Weblogic的安装、配置与应用部署
查看>>
python机器可读数据-json
查看>>
一张图看懂债券
查看>>
背景颜色透明
查看>>