鉴定Excel格式是否是2003或2007,如果你的做法是读取扩展名,那说明你还是一个菜鸟!因为后缀完全是我们可以随意更改,我们可以把xls改成xlsx,甚至是txt,exe,jpg的后缀改成xlsx。
不过不管扩展名如何改变,文件的字节是改不了的,所以一般鉴定文件的真正格式应该读取byte,一般前几个字节都决定了文件的格式,这个是改不了的
读取Excel格式用不着如此麻烦了,我们完全可以借助POI提供的功能去鉴定。POI的Workbook提供了两个实现类,HSSFWorkbook(处理2003)和XSSFWorkbook(处理2007)
代码如下:
public static boolean isExcel2003(InputStream is) {
try {
new HSSFWorkbook(is);
} catch (Exception e) {
return false;
}
return true;
}
public static boolean isExcel2007(InputStream is) {
try {
new XSSFWorkbook( is);
} catch (Exception e) {
return false;
}
return true;
}
调用
public static void main(String[] args) throws IOException {
String path ="C:\\Users\\QUINN\\Desktop\\template\\0.xlsx";
File file = new File(path);
InputStream is = new FileInputStream(file);
System.out.println(FileHelper.isExcel2003(is));
System.out.println(FileHelper.isExcel2007(is));
}
以上调用的方法是错误的,如果文件真的是2007,则会两个都返回false,原因后面再说,先看看正确的写法。
public static void main(String[] args) throws IOException {
String path ="C:\\Users\\QUINN\\Desktop\\template\\0.xlsx";
File file = new File(path);
System.out.println(FileHelper.isExcel2003(new FileInputStream(file)));
System.out.println(FileHelper.isExcel2007(new FileInputStream(file)));
}
后面这个才是正确的方式,前面的之所以不成功,那是因为在执行第一个方法isExcel2003的时候new了一个workbook,workbooknew完之后在POIFSFileSystem会有一个关闭流的操作,如图
当执行到isExcel2007的时候还是那个InputStream对象,但是对象已经在isExcel2003的方法里被close了,所以在后面的方法里始终是报错的。
- 大小: 86.2 KB
分享到:
相关推荐
在这个"poi读取excel2007和2003兼容工具例子"中,我们将探讨如何使用POI来读取不同版本的Excel文件,特别是Excel 2003(.xls)和Excel 2007及更高版本(.xlsx)。 1. **Apache POI库**:Apache POI是Apache软件基金...
它不仅支持旧版的Excel文件格式(.xls,用于Office 2003及更早版本),还支持新版本的Excel文件格式(.xlsx,自Office 2007起)。以下是对"java中poi读写excel封装工具类"这一主题的详细解释。 1. **Apache POI介绍...
这篇博文主要讲解如何使用Apache POI库来读取Excel文件的内容,无论是2003版的.XLS还是2007版及以后的.XLSX格式。 在Java编程中,Apache POI 提供了丰富的API,使得开发者可以方便地操作Excel文件。首先,我们需要...
这个异常通常发生在尝试解析Excel文件时,POI检测到数据流中存在未读取或未解释的数据。 `LeftoverDataException`的出现意味着POI在解析工作簿或工作表时,发现有剩余的数据没有被正确处理。这可能由于多种原因,...
在Java编程环境中,如果你需要读取或写入Excel文件,POI 提供了强大的支持。本教程将深入讲解如何使用POI的HSSF组件来处理Excel 97-2003格式的文件(BIFF8格式)。 一、Excel基础 Excel 97 文件格式,也被称作BIFF8...
POI是Portable Object Interface的缩写,它提供了API,使得开发人员可以处理Microsoft Office的二进制文件格式,如XLS(Excel 97-2003格式)和XLSX(Excel 2007及以上版本)。POI库包括HSSF(Horrible Spreadsheet ...
在这个“android POI 读取excel 精简jar”中,我们看到了几个关键的库文件,它们是专门为Android环境优化的轻量级版本,以适应移动设备资源有限的情况。 1. **jxl.jar**: 这是JExcelAPI的库文件,一个早期的Java库...
在封装POI操作Excel的过程中,反射可能被用来动态地创建对象,调用方法,或访问私有成员,这使得代码更具灵活性和可扩展性。例如,可以使用反射动态地根据Excel工作表的列名创建对应的Java对象属性,或者在不知道...
Apache POI 提供了HSSF和XSSF两个API来分别处理旧版的.BIFF8格式(Excel 97-2007)和较新的XML格式(Excel 2007及以上)。通过这些API,我们可以打开Excel文件,遍历工作表中的每一行和每个单元格,然后根据需求将...
首先,Apache POI提供了HSSF和XSSF两个API,分别用于处理老版本的BIFF8格式(.xls)和新版本的OOXML格式(.xlsx)。在这个案例中,我们关注的是处理OOXML格式的Excel文件,因此会使用XSSF API。 导入数据的过程中,...
本示例代码展示了如何使用POI处理2003和2007版本的Excel文件。 1. **创建2003版Excel文件(`.xls`)** 使用`HSSFWorkbook`类来创建2003版Excel文件。以下是一些关键点: - `HSSFWorkbook`:这是处理Excel 97-...
本文将深入探讨如何使用Java的Apache POI库来读取Excel文件,并处理其中合并单元格的数据,同时将这些数据存储到实体类中以供后续使用。 Apache POI是一个强大的库,允许程序员使用Java来创建、修改和显示Microsoft...
在Java开发中,Apache POI 是一个非常流行的库,它允许程序员创建、修改和显示Microsoft Office格式的文件,特别是Excel工作簿。本项目是关于如何使用POI库导出Excel表格的一个实例,其中包括了必要的代码组件和配置...
在实际开发中,可以参考提供的压缩包文件(excel)中的示例或文档,学习如何调用工具类的方法,以及如何根据自己的业务需求进行定制和扩展。通过不断实践和优化,这个工具类可以帮助你更高效地处理Excel相关的任务。
POI2.x系列是针对早期的Excel文件格式,如.BIFF8(Excel 97-2003),而POI3.x及更高版本增加了对Office Open XML(OOXML)的支持,这是从Excel 2007开始引入的新格式。 描述中提到的问题主要集中在兼容性上,当使用...
【标题】"poi解析excel"涉及的是Java编程中使用Apache POI库来处理Microsoft Excel文件的知识。Apache POI是开源项目,提供了API用于读写Microsoft Office格式的文件,特别是Excel。在Java应用中,POI使得开发者能够...
兼容03/07版Excel的功能意味着ExcelUtil支持两种主要的Excel文件格式:.xls(97-2003版本)和.xlsx(2007及以上版本)。这得益于Apache POI库的广泛支持。 总的来说,ExcelUtil通过结合反射和Apache POI库,极大地...
- POI库支持多种版本的Excel文件格式,包括老版的BIFF8(.xls)和新版的XML格式(.xlsx),确保兼容性。 综上所述,"Springboot+Poi实现Excel的导入导出"是一个实用的功能,它结合了Spring Boot的便捷性、MyBatis...
在Java环境中,使用POI库可以方便地读取、写入和操作Excel文件,无论是2003版(.xls)还是2007版及以后版本(.xlsx)。本篇文章将深入探讨如何使用Apache POI来读取Excel 03和07的文件。 1. **Apache POI介绍** ...
当用户尝试用POI2.x处理Excel2007或更高版本的文件时,会遇到`OfficeXmlFileException`,因为这些新版本的文件采用了不同的XML格式,而POI2.x并不支持这种格式。此外,如果Excel2007文件被保存为.xls(Excel97-2003...