java解析Excel(兼容2003及2007)
刚开始从网上找了个例子使用new HSSFWorkbook(new FileInputStream(excelFile))来读取Workbook,
对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)
该错误意思是说,文件中的数据是用Office2007+XML保存的,而现在却调用OLE2 Office文档处理,应该使用POI不同的部分来处理这些数据,比如使用XSSF来代替HSSF。
于是按提示使用XSSF代替HSSF,用new XSSFWorkbook(excelFile)来读取Workbook,对Excel2007没有问题了,可是在读取Excel2003以前(包括2003)的版本时却发生了如下新异常:
org.apache.poi.openxml4j.exceptions.InvalidOperationException: Can't open the specified file: '*.xls'
该错误是说,操作无效,不能打开指定的xls文件。
到网上查了下,原来是XSSF不能读取Excel2003以前(包括2003)的版本,这样的话,就需要在读取前判断文件是2003前的版本还是2007的版本,然后对应调用HSSF或XSSF来读取。
这种做法比较麻烦,看了下API,发现XSSF和HSSF虽然在不同的包里,但却引用了同一接口Workbook,于是想到了这样的读取方法:
Workbook book = null;
try {
book = new XSSFWorkbook(excelFile);
} catch (Exception ex) {
book = new HSSFWorkbook(new FileInputStream(excelFile));
}
本认为程序应该没错了吧,但一运行还是报错(当时用得是poi3.6的zip包):
java.lang.ClassNotFoundException: org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet
网上搜了下,是少poi-ooxml-schemas-xxx.jar包,根据提示在Apache网站上(http://labs.renren.com/apache-mirror//poi/release/bin/)下载了3.7的zip文件(poi-bin-3.7-20101029.zip),解压后将poi相关的包和xml相关的包都放上去。
在各版本的Excel中测试,没有发生异常,问题解决。
下面是POI的API网址,不过是英文的:
POI API Documentation
http://poi.apache.org/apidocs/index.html
分享到:
相关推荐
JAVA用POI读取和创建2003和2007版本Excel完美示例 同时还有相关的类包 注意工程里面别存在冲突类包
java解析获取Excel中的数据--同时兼容2003及2007
ava解析Excel(兼容2003及2007):解析2003及以下使用HSSFWorkbook类, 解析2007及以上使用XSSFWorkbook, 如果解析类与excel版本不对应,抛出相应的异常,例如HSSFWorkbook解析2007: org.apache.poi.poifs....
主要介绍了java 中 poi解析Excel文件版本问题解决办法的相关资料,需要的朋友可以参考下
基于poi实现word/excel转换为HTML(且兼容.doc.docx.xls.xlsx) 对于简单的word Excel 转换 足够。excel转换时存在火狐浏览器不兼容乱码问题,希望多多交流。
实例2 Java UDP编程及应用 实例7 Java servlet中对模板文件的处理 实例10 在Java应用程序中播放Midi音乐 实例13 基于Java语言的多线程同步机制 实例14 Java程序中的多线程实现 实例15 利用Java的多线程...
针对于excel生成和读取所要使用的jar包。。。。。。。。。。。。。。。。。。。。。。。。。。。。
Excel解析器 Excel Parser提供了一个功能,可以轻松地从Spring引导应用程序中提取Excel数据。 使用Apache POI库对API进行了抽象,并且通过使用Excel Parser,用户可以专注于编写业务逻辑。 同时支持DOM类型...
applications和applet,applications可以在控制台直接运行,与其他高级编程语言没有太大区别,而java的特色在于它具有编制小应用程序的功能,applet可以在internet上传输并在兼容java的web浏览器中运行的程序;...
对Excel '97(-2003)(BIFF8)文件格式的读写支持。 BIFF(二进制交换文件格式)的低级结构。 复合文档文件格式(也称为“ OLE2存储文件格式”或“ Microsoft-Office兼容存储文件格式”)的低级结构。 用于创建,...
excelPOI都有一个严重的问题,就是非常消耗内存,特别处理数据量多时,速度慢并且时有异常发生,所以改用由阿里研发的easyExcel更可靠一些,它的官方建议对于1000行以内的采用原来poi的写法一次读写,但于1000行以上...
送了两个宏(在线翻译和自动翻译),属于可选...* Microsoft Excel 文件解析器 支持所有 Excel 文件中的表单 * XLIFF 配置文件 WYSIWYG 编辑器给 Windows 资源 * 用户定义的文件格式 高度结构化的文本文件和二进制文件
browsers兼容性 Highstock 可以在所有的移动设备及电脑上的浏览器中使用,包括 iPhone,iPad 和 IE6 以上的版本。在 IOS 和 Android 系统中 Highstock 支持多点触摸功能,因而可以给您提供极致的用户体验。在现代的...
browsers兼容性 Highstock 可以在所有的移动设备及电脑上的浏览器中使用,包括 iPhone,iPad 和 IE6 以上的版本。在 IOS 和 Android 系统中 Highstock 支持多点触摸功能,因而可以给您提供极致的用户体验。在现代的...
兼容性 Highcharts 可以在所有的移动设备及电脑上的浏览器中使用,包括 iPhone,iPad 和 IE6 以上的版本,在 IOS 和 Android 系统中 Highcharts 支持多点触摸功能,因而可以给您提供极致的用户体验。在现代的浏览器...
投资组合经理 使用AlphaVantage API的投资组合管理应用程序的Android原型。 图书馆: 安卓 支持库-兼容性 HelloCharts-图 排球-网络 ...XLRD-Excel文件解析器 AlphaVantage-Web API的Python包装器
小试ASP.NET 2.0的兼容性 为 asp.net 2.0 的菜单控件增加 target 属性 ASP.NET 2.0 的内部变化 常见的 ASP.NET 2.0 转换问题和解决方案 Asp.Net2.0无刷新客户端回调 体验.net 2.0 的优雅(1) -- 异步WebService调用...
支持多种匹配方式(全匹配/模糊查询/包含查询/不匹配查询)技术点十一:移动平台支持,对Bootstrap(兼容Html5)进行标准封装技术点十二:动态报表功能(用户输入一个sql,系统自动解析生成报表)技术点十三:数据权限...
技术点十二:动态报表功能(用户输入一个sql,系统自动解析生成报表) 技术点十三:数据权限(精细化数据权限控制,控制到行级,列表级,表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段) 技术...