刚开始使用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文件。
下载POI的源码后进行单步调试,发现刚开始的时候还是对的,但到ZipFile类后就找不到文件了,到网上查了下,原来是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));
}
在各版本的Excel中测试,没有发生异常,问题解决。
不过要注意的是不仅仅要导入那个poi-3.8-20120326.jar包,而且要导入 poi-ooxml-3.8-beta5-20111217.jar
xmlbeans-2.3.0.jar
poi-ooxml-schemas-3.8-beta5-20111217.jar
dom4j-1.6.1.jar等相关的Jar包,
分享到:
相关推荐
以上就是使用Apache POI解析Excel并转换为HTML的基本步骤,需要注意的是,为了兼容Excel 03和07,你需要处理两者之间的差异,如不同的样式类和格式。此外,对于复杂的样式和公式,可能需要额外的处理逻辑。在实际...
使用Apache POI解析Excel数据的基本步骤如下: 1. **添加依赖**:将对应的poi.jar包引入项目类路径。如果是Maven项目,可以在pom.xml文件中添加依赖项,如下: ```xml <groupId>org.apache.poi <artifactId>...
Java POI库是Apache软件基金会开发的一个开源项目,主要用于处理Microsoft Office格式的文件,包括Word(.doc和.docx)、Excel(.xls和.xlsx)和PowerPoint(.ppt和.pptx)。在这个场景中,我们将重点讨论如何使用...
《使用POI解析Excel》 在信息技术领域,处理数据是日常工作中不可或缺的一部分,而Excel作为广泛使用的电子表格软件,其数据处理能力强大且灵活。Apache POI是一个开源库,专门用于读取和写入Microsoft Office格式...
"android poi解析Excel 的三个jar包" 提供了实现这一目标所需的Java库。这些库使得Android应用可以与Excel文件进行交互,而无需依赖Microsoft Office或任何桌面环境。让我们详细探讨这三个关键的jar包以及它们在...
**POI解析Excel的主要知识点** 1. **工作簿(Workbook)**: 在POI中,Excel文件被抽象为一个Workbook对象。你可以创建、读取或修改Workbook。 2. **工作表(Sheet)**: Workbook包含一个或多个Sheet,每个Sheet对应...
"poi3.7 poi3.6解析excel2007全jar包"指的是包含了Apache POI 3.7和3.6版本中用于解析Excel 2007 (.xlsx)文件的所有必需的JAR库。 Apache POI 3.6 和 3.7 版本之间的主要区别可能在于修复了一些已知的bug,增加了新...
2. **使用Apache POI解析Excel**: - **创建工作簿**: 使用WorkbookFactory.create()方法,传入文件或输入流来创建Workbook对象,这代表整个Excel文件。 - **访问工作表**: Workbook对象有getSheetAt()或getSheet...
Java 中 POI 解析 Excel 文件版本问题解决办法 Java 中 POI 解析 Excel 文件版本问题解决办法是 Java 开发者经常遇到的一个问题。POI(Poor Obfuscation Implementation)是 Apache 软件基金会的一个开源项目,提供...
由于3.1版本较旧,可能不支持某些较新的Excel特性或修复的安全漏洞,建议升级到最新稳定版本以获取更好的兼容性和安全性。 5. **注意事项**: - 关闭资源:在读写操作完成后,一定要记得关闭FileInputStream、...
10. **版本兼容性**:尽管本资源提供的是3.10版本的POI,但请注意,不同版本的POI可能对新旧Excel文件格式的支持有所不同。最新版本通常会包含更多的特性、修复和性能提升,因此在实际项目中,应尽可能使用最新稳定...
在Java应用中,我们可以利用POI来解析Excel数据,将其转换为可操作的对象,或者将Java对象写入Excel文件。 Excel与MySQL的交互主要涉及两个过程:数据导入和数据导出。 1. 数据导入:这个过程通常涉及到读取Excel...
当使用POI操作xlsx格式(OOXML)的Excel文件时,需要此库来解析和构建符合标准的XML文档。 2. **poi-3.8-20120326.jar**:这是Apache POI的核心库,包含处理老版Binary File Format (.xls) 的功能,以及部分OOXML的...
- 在更新版本时,要注意兼容性问题,尤其是依赖的其他库可能需要同步更新。 总的来说,Apache POI是Java开发中不可或缺的一个工具,它极大地拓宽了Java处理Microsoft Office文件的能力,让开发者能够在不依赖于...
在Java环境中,如果你需要导出或者操作Excel文档,Apache POI是必不可少的工具。标题提到的"导出excel文档所需要的poi的jar包"正是指这个功能。 Apache POI的版本3.8是较早的一个稳定版本,尽管现在已经有更新的...
下面将详细阐述这两个库在解析Excel时的应用及其相关知识点。 1. **Apache POI**: - **简介**:Apache POI 是一个开源项目,它允许Java开发者创建、修改和显示Microsoft Office文件,特别是Excel。POI支持老版本...
Excel部分,POI提供了对Excel电子表格的全面操作,包括创建新的工作簿、添加工作表、插入数据、设置样式、读取和解析已存在的文件等。Word部分,POI允许开发者创建新的Word文档,添加文本、段落、表格、图片,以及...
综上所述,Java解析Excel文件使用Apache POI库可以方便地完成读取、写入和编辑Excel文档的工作,而提供的压缩包文件则包含了不同版本的库以及可能的使用说明,为开发者提供了完整的工具集。在实际开发中,应根据项目...
3. **兼容性处理**:由于Word的.doc和Excel的.xls是较旧的二进制格式,而.docx和.xlsx是较新的XML格式,所以工具类需要处理这两种不同格式的文件,确保都能正确解析和展示。 4. **性能优化**:对于大型文件,直接...
Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和...同时,要注意版本兼容性,因为不同版本的POI可能对新旧Excel格式的支持程度不同,以及对Java版本的要求也可能有所差异。