`

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(有实例和类包)

    Apache POI提供了两个主要的API,HSSF(Horrible Spreadsheet Format)用于处理老版的BIFF8格式(.xls,Excel 2003及更早版本),而XSSF(XML Spreadsheet Format)则用于处理新的OOXML格式(.xlsx,Excel 2007及更...

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

    在本文中,我们将深入探讨如何使用Java来解析并获取Excel中的数据,同时确保兼容2003版(.xls)和2007版及以上(.xlsx)的文件格式。这两个版本的文件格式不同,因此处理方式也会有所差异。 首先,对于2003版的...

    java读取excel(兼容2003和2007)

    Excel文件格式有两种主要版本,即2003年的.xls格式和2007年及以后的.xlsx格式。为了兼容这两种格式,Java引入了Apache POI库,这是一个用于处理Microsoft Office文档的开源API。 Apache POI提供了HSSF(Horrible ...

    java编写的兼容2003、2007Excel文件读取工程

    在本项目中,我们关注的是“java编写的兼容2003、2007Excel文件读取工程”。这个工程的目标是实现一个Java程序,能够读取Microsoft Excel的两种主要格式:.xls(用于2003及更早版本)和.xlsx(用于2007及更高版本)...

    导出Excel兼容2003和2007

    ### 导出Excel兼容2003和2007的知识点 在处理Excel文件时,经常需要确保创建的文件可以被不同版本的Excel软件所兼容。特别是在Java开发环境中,利用Apache POI库来实现这一功能非常常见。下面将详细介绍如何使用...

    Java解析Excel的opi.jar包

    Java解析Excel是一项常见的任务,特别是在数据处理和报告生成的场景中。`poi.jar`库是Apache POI项目的一部分,这是一个开源的Java API,专门用于处理Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。在Java...

    java读取数据量大的excel文件(2003及2007)

    这里我们主要探讨如何使用Java有效地读取2003版和2007版这两种不同格式的大型Excel文件。 1. **Apache POI库**:Apache POI是Java社区中最常用的处理Microsoft Office格式文件的库,包括Excel(XLS和XLSX)。对于...

    java、Android实现Excel表的解析读取操作

    3. 解析Excel的注意事项: - 文件路径:在Java中,路径通常是文件系统的绝对路径;在Android中,可能是内部存储或外部存储的路径,或者从Assets或Raw资源中加载。 - 版本兼容:不同的Excel版本(如xls和xlsx)可能...

    JAVA读取Excel,建库建表,并生成java实体

    总结,Java读取Excel并进行数据库建库建表及生成Java实体的过程涉及了Apache POI库的使用、数据库操作和源代码生成。理解这些步骤可以帮助你有效地处理类似的任务,提高开发效率。在实际应用中,你还需要考虑错误...

    好用的excel导入导出工具for Java(兼容2003和2007)

    本文将深入探讨如何使用一个优秀的Java库来高效地实现Excel的导入和导出,尤其针对Excel 2003和2007格式的兼容性。 标题中的“好用的excel导入导出工具for Java”指的是Java开发中的一种专门处理Excel的库,它允许...

    java导出excel2007

    本文将深入探讨如何使用Apache POI库来实现在Java中导出Excel 2007文件,同时也会涉及如何处理Excel 2003的.xls格式。 Apache POI是Apache软件基金会的一个项目,它提供了一组API,用于读写Microsoft Office格式的...

    使用jxl解析excel(.xls)固定模板(智联简历为例)

    本教程将深入讲解如何使用JXL库解析Excel中的固定模板,以智联招聘的简历模板为例进行说明。 首先,确保你的项目已经引入了JXL库。在这个例子中,我们看到一个名为`jxl-2.6.8.jar`的文件,这正是JXL库的jar包。将此...

    java解析excel(poi的所有jar包)

    在给定的标题和描述中提到的"java解析excel(poi的所有jar包)",指的是使用Apache POI库来处理Excel文件。这个库包括多个版本的jar包,如xmlbeans-2.3.0.jar,poi-3.7-20101029.jar,以及jsr173_1.0_api.jar等,...

    poi 解析excel文件内容demo

    在这个"poi 解析excel文件内容demo"中,我们主要关注如何使用Apache POI库来读取和解析Excel文件,无论它们是2003版的.XLS还是2007以后的.XLSX格式。 首先,Apache POI提供了两种主要的接口来处理Excel文件:HSSF...

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

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

    java解析excel文件 poi.jar

    Java解析Excel文件是Java开发中常见的一项任务,尤其是在数据处理、报表生成或数据分析等领域。Apache POI库是Java中用于读取和写入Microsoft Office格式文件的开源库,特别是对于Excel(.xls和.xlsx)文件的支持。...

    poi-3.16(Java解析Excel)

    - **XSSF**: 对于Excel 2007及以后版本的.xlsx文件,POI提供了XSSF库,它支持OOXML格式。 - **SXSSF**: 为了解决内存限制,POI还提供了SXSSF库,它是一个基于流的API,适合处理大型Excel文件,因为它可以将数据...

    java版excel解析封装

    提供的testOne.xlsx和"excel文件解析支持所有excel格式"提示我们,这个封装库可能已经考虑了多种Excel版本的兼容性,这在实际应用中是非常重要的。在实际操作中,你可以用这两个文件作为测试数据,验证和调试你的...

    POI兼容Excel2003和2007

    Excel 2003使用的是.BIFF(Binary Interchange File Format)格式,而Excel 2007及以上版本则引入了新的.OpenXML(.xlsx)格式,这是一个基于XML的文件标准。 **1. POI简介** Apache POI是Java领域中的一个关键工具...

Global site tag (gtag.js) - Google Analytics