`
hekuilove
  • 浏览: 158675 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

POI检查EXCEL版本(2003或2007)

阅读更多
鉴定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
2
0
分享到:
评论

相关推荐

    poi读取excel2007和2003兼容工具例子

    在这个"poi读取excel2007和2003兼容工具例子"中,我们将探讨如何使用POI来读取不同版本的Excel文件,特别是Excel 2003(.xls)和Excel 2007及更高版本(.xlsx)。 1. **Apache POI库**:Apache POI是Apache软件基金...

    java中poi读写excel封装工具类(兼容office2003和2007等版本)

    它不仅支持旧版的Excel文件格式(.xls,用于Office 2003及更早版本),还支持新版本的Excel文件格式(.xlsx,自Office 2007起)。以下是对"java中poi读写excel封装工具类"这一主题的详细解释。 1. **Apache POI介绍...

    apache poi 读取Excel文件内容(2003,2007)

    这篇博文主要讲解如何使用Apache POI库来读取Excel文件的内容,无论是2003版的.XLS还是2007版及以后的.XLSX格式。 在Java编程中,Apache POI 提供了丰富的API,使得开发者可以方便地操作Excel文件。首先,我们需要...

    POI 导入Excel 提醒LeftoverDataException求帮助

    这个异常通常发生在尝试解析Excel文件时,POI检测到数据流中存在未读取或未解释的数据。 `LeftoverDataException`的出现意味着POI在解析工作簿或工作表时,发现有剩余的数据没有被正确处理。这可能由于多种原因,...

    POI读取EXCEL教程

    在Java编程环境中,如果你需要读取或写入Excel文件,POI 提供了强大的支持。本教程将深入讲解如何使用POI的HSSF组件来处理Excel 97-2003格式的文件(BIFF8格式)。 一、Excel基础 Excel 97 文件格式,也被称作BIFF8...

    使用POI向Excel模板动态添加内容

    POI是Portable Object Interface的缩写,它提供了API,使得开发人员可以处理Microsoft Office的二进制文件格式,如XLS(Excel 97-2003格式)和XLSX(Excel 2007及以上版本)。POI库包括HSSF(Horrible Spreadsheet ...

    android POI 读取excel 精简jar

    在这个“android POI 读取excel 精简jar”中,我们看到了几个关键的库文件,它们是专门为Android环境优化的轻量级版本,以适应移动设备资源有限的情况。 1. **jxl.jar**: 这是JExcelAPI的库文件,一个早期的Java库...

    POI操作Excel的封装

    在封装POI操作Excel的过程中,反射可能被用来动态地创建对象,调用方法,或访问私有成员,这使得代码更具灵活性和可扩展性。例如,可以使用反射动态地根据Excel工作表的列名创建对应的Java对象属性,或者在不知道...

    poi excel转换成bean

    Apache POI 提供了HSSF和XSSF两个API来分别处理旧版的.BIFF8格式(Excel 97-2007)和较新的XML格式(Excel 2007及以上)。通过这些API,我们可以打开Excel文件,遍历工作表中的每一行和每个单元格,然后根据需求将...

    Springboot+Poi实现Excel的导入导出

    - POI库支持多种版本的Excel文件格式,包括老版的BIFF8(.xls)和新版的XML格式(.xlsx),确保兼容性。 综上所述,"Springboot+Poi实现Excel的导入导出"是一个实用的功能,它结合了Spring Boot的便捷性、MyBatis...

    Java 使用poi导入excel 并使用xml做数据验证

    首先,Apache POI提供了HSSF和XSSF两个API,分别用于处理老版本的BIFF8格式(.xls)和新版本的OOXML格式(.xlsx)。在这个案例中,我们关注的是处理OOXML格式的Excel文件,因此会使用XSSF API。 导入数据的过程中,...

    JAVA用POI读取和创建2003和2007版本Excel完美示例.pdf

    本示例代码展示了如何使用POI处理2003和2007版本的Excel文件。 1. **创建2003版Excel文件(`.xls`)** 使用`HSSFWorkbook`类来创建2003版Excel文件。以下是一些关键点: - `HSSFWorkbook`:这是处理Excel 97-...

    POI导出Excel表格

    在Java开发中,Apache POI 是一个非常流行的库,它允许程序员创建、修改和显示Microsoft Office格式的文件,特别是Excel工作簿。本项目是关于如何使用POI库导出Excel表格的一个实例,其中包括了必要的代码组件和配置...

    基于POI的Excel多Sheet页导出导入工具类

    在实际开发中,可以参考提供的压缩包文件(excel)中的示例或文档,学习如何调用工具类的方法,以及如何根据自己的业务需求进行定制和扩展。通过不断实践和优化,这个工具类可以帮助你更高效地处理Excel相关的任务。

    POI读取Excel合并单元格并储存

    本文将深入探讨如何使用Java的Apache POI库来读取Excel文件,并处理其中合并单元格的数据,同时将这些数据存储到实体类中以供后续使用。 Apache POI是一个强大的库,允许程序员使用Java来创建、修改和显示Microsoft...

    POI2与POI3差异及解决excel2003和excel2007兼容性研究报告-V1.1.pdf

    POI2.x系列是针对早期的Excel文件格式,如.BIFF8(Excel 97-2003),而POI3.x及更高版本增加了对Office Open XML(OOXML)的支持,这是从Excel 2007开始引入的新格式。 描述中提到的问题主要集中在兼容性上,当使用...

    poi解析excel

    【标题】"poi解析excel"涉及的是Java编程中使用Apache POI库来处理Microsoft Excel文件的知识。Apache POI是开源项目,提供了API用于读写Microsoft Office格式的文件,特别是Excel。在Java应用中,POI使得开发者能够...

    ExcelUtil借助反射和POI对Excel读取,省略了以往读取Excel的繁琐步骤

    兼容03/07版Excel的功能意味着ExcelUtil支持两种主要的Excel文件格式:.xls(97-2003版本)和.xlsx(2007及以上版本)。这得益于Apache POI库的广泛支持。 总的来说,ExcelUtil通过结合反射和Apache POI库,极大地...

    poi 读取excel 03 07

    在Java环境中,使用POI库可以方便地读取、写入和操作Excel文件,无论是2003版(.xls)还是2007版及以后版本(.xlsx)。本篇文章将深入探讨如何使用Apache POI来读取Excel 03和07的文件。 1. **Apache POI介绍** ...

    POI2与POI3差异及解决excel2003和excel2007兼容性研究报告-V1.1.docx

    当用户尝试用POI2.x处理Excel2007或更高版本的文件时,会遇到`OfficeXmlFileException`,因为这些新版本的文件采用了不同的XML格式,而POI2.x并不支持这种格式。此外,如果Excel2007文件被保存为.xls(Excel97-2003...

Global site tag (gtag.js) - Google Analytics