org.apache.poi.poifs.filesystem.NotOLE2FileException: Invalid header signature; 使用wps修改excel文件

这个错误提示表明 Apache POI 遇到了一个不是有效 OLE2 文档的文件。OLE2(Object Linking and Embedding)是一种二进制文件格式,通常用于存储 Microsoft Office 文档,包括 Excel 文件。

常见的原因和解决方法可能包括:

  1. 文件格式不正确: 确保文件确实是 Excel 文件,并且没有被损坏。可以尝试打开文件并保存为新的 Excel 文件,看看是否解决问题。

  2. 文件类型和后缀名不匹配: 确保文件的扩展名(.xls 或 .xlsx)与文件的实际内容格式相匹配。

  3. 文件受密码保护: 如果文件受密码保护,可能需要提供密码才能正确解析。你可以尝试用 Excel 打开文件并取消密码保护,再尝试使用 Apache POI。

  4. 文件版本问题: Apache POI 可能不支持某些特定版本的 Excel 文件。确保你使用的 Apache POI 版本与文件格式兼容。

  5. 文件被其他程序锁定: 确保文件没有被其他程序(比如 Excel 或 WPS)锁定,以免 Apache POI 无法正确读取。
     

我遇到的的问题的原因,是通过wps打开了该xls文件,并且进行了修改和保存,WPS 通常能够正确处理 Excel 文件。然而,有一些情况可能会导致问题:

  1. 文件格式问题: WPS 和 Microsoft Excel 之间可能存在某些格式差异,尤其是在处理特定功能或格式时。这可能导致 Apache POI 在读取时遇到问题。

  2. 保存格式问题: 如果在使用 WPS 进行修改后,再次保存文件时选择了一种不兼容的格式,可能导致 Apache POI 无法正确读取。

ClassPathResource resource = new ClassPathResource(path);
			wb = new HSSFWorkbook(resource.getInputStream());
response.setContentType("application/vnd.ms-excel;chartset=UTF-8");// application/vnd.ms-excel
			//response.setHeader("Content-disposition", "attachment; filename=" + new String(attachName.getBytes("UTF-8"), "ISO-8859-1"));
			response.setHeader("Content-disposition", "attachment; filename=" + FileNameCharacterEncodingUtil.setCharacterEncoding(attachName, request));
			wb.write(response.getOutputStream());
			response.getOutputStream().close();

之后通过这个代码去导出excel文件便出现上面的错误

解决方法:用excel重新打开这个xls文件,并且重命名另存在目标目录里面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值