`

java解析Excel(兼容2003及2007)

    博客分类:
  • java
 
阅读更多

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
分享到:
评论
5 楼 hellwhj 2017-08-09  
4 楼 liup000010 2013-09-24  
3 楼 pls890429 2013-03-20  
2 楼 surfingForRest 2012-10-31  
1 楼 xymtian 2012-06-08  

相关推荐

    Java解析Excel兼容2003和2007(有实例和类包)

    JAVA用POI读取和创建2003和2007版本Excel完美示例 同时还有相关的类包 注意工程里面别存在冲突类包

    java解析获取Excel中的数据--同时兼容2003及2007

    java解析获取Excel中的数据--同时兼容2003及2007

    java处理excel库,poi-bin-4.1.0-20190412

    ava解析Excel(兼容2003及2007):解析2003及以下使用HSSFWorkbook类, 解析2007及以上使用XSSFWorkbook, 如果解析类与excel版本不对应,抛出相应的异常,例如HSSFWorkbook解析2007: org.apache.poi.poifs....

    java 中 poi解析Excel文件版本问题解决办法

    主要介绍了java 中 poi解析Excel文件版本问题解决办法的相关资料,需要的朋友可以参考下

    基于poi实现word/excel转换为HTML(且兼容.doc.docx.xls.xlsx)

    基于poi实现word/excel转换为HTML(且兼容.doc.docx.xls.xlsx) 对于简单的word Excel 转换 足够。excel转换时存在火狐浏览器不兼容乱码问题,希望多多交流。

    《Java编程技巧典型案例解析》随书光盘

    实例2 Java UDP编程及应用 实例7 Java servlet中对模板文件的处理 实例10 在Java应用程序中播放Midi音乐 实例13 基于Java语言的多线程同步机制 实例14 Java程序中的多线程实现 实例15 利用Java的多线程...

    兼容office2007的生成和读取jar包

    针对于excel生成和读取所要使用的jar包。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    excel-parser-spring-boot-starter:Excel解析器

    Excel解析器 Excel Parser提供了一个功能,可以轻松地从Spring引导应用程序中提取Excel数据。 使用Apache POI库对API进行了抽象,并且通过使用Excel Parser,用户可以专注于编写业务逻辑。 同时支持DOM类型...

    java jdk实列宝典 光盘源代码

    applications和applet,applications可以在控制台直接运行,与其他高级编程语言没有太大区别,而java的特色在于它具有编制小应用程序的功能,applet可以在internet上传输并在兼容java的web浏览器中运行的程序;...

    FastExcel:FastExcel是一个纯Java excel读写组件,它是FAST和TINY

    对Excel '97(-2003)(BIFF8)文件格式的读写支持。 BIFF(二进制交换文件格式)的低级结构。 复合文档文件格式(也称为“ OLE2存储文件格式”或“ Microsoft-Office兼容存储文件格式”)的低级结构。 用于创建,...

    springboot结合Easyexcel的使用(详细介绍Easyexcel)小白入门到精通

    excelPOI都有一个严重的问题,就是非常消耗内存,特别处理数据量多时,速度慢并且时有异常发生,所以改用由阿里研发的easyExcel更可靠一些,它的官方建议对于1000行以内的采用原来poi的写法一次读写,但于1000行以上...

    SDL Passolo 2011 合作版 SP9 (11.9.0.53) 已注册中文版

    送了两个宏(在线翻译和自动翻译),属于可选...* Microsoft Excel 文件解析器 支持所有 Excel 文件中的表单 * XLIFF 配置文件 WYSIWYG 编辑器给 Windows 资源 * 用户定义的文件格式 高度结构化的文本文件和二进制文件

    Highcharts-Gantt-8.1.2.zip

    browsers兼容性 Highstock 可以在所有的移动设备及电脑上的浏览器中使用,包括 iPhone,iPad 和 IE6 以上的版本。在 IOS 和 Android 系统中 Highstock 支持多点触摸功能,因而可以给您提供极致的用户体验。在现代的...

    Highcharts-Stock-8.1.2.zip

    browsers兼容性 Highstock 可以在所有的移动设备及电脑上的浏览器中使用,包括 iPhone,iPad 和 IE6 以上的版本。在 IOS 和 Android 系统中 Highstock 支持多点触摸功能,因而可以给您提供极致的用户体验。在现代的...

    Highcharts-8.1.2.zip

    兼容性 Highcharts 可以在所有的移动设备及电脑上的浏览器中使用,包括 iPhone,iPad 和 IE6 以上的版本,在 IOS 和 Android 系统中 Highcharts 支持多点触摸功能,因而可以给您提供极致的用户体验。在现代的浏览器...

    portfoliomanager:使用AlphaVantage API的投资组合管理应用程序的Android原型

    投资组合经理 使用AlphaVantage API的投资组合管理应用程序的Android原型。 图书馆: 安卓 支持库-兼容性 HelloCharts-图 排球-网络 ...XLRD-Excel文件解析器 AlphaVantage-Web API的Python包装器

    asp.net知识库

    小试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调用...

    JEECG快速开发平台-其他

    支持多种匹配方式(全匹配/模糊查询/包含查询/不匹配查询)技术点十一:移动平台支持,对Bootstrap(兼容Html5)进行标准封装技术点十二:动态报表功能(用户输入一个sql,系统自动解析生成报表)技术点十三:数据权限...

    JEECG快速开发平台 v4.0

    技术点十二:动态报表功能(用户输入一个sql,系统自动解析生成报表) 技术点十三:数据权限(精细化数据权限控制,控制到行级,列表级,表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段) 技术...

Global site tag (gtag.js) - Google Analytics