解决POI读取EXCEL文件出错的问题

本文介绍了解决因Excel文件头不标准导致Apache POI无法正确读取的问题。通过使用Advanced Excel Repair软件,即使对于损坏的Excel文件也能进行有效修复,使其符合标准格式,进而确保POI能正常工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

有一个项目要在J2EE后台读取EXCEL中的内容,调研后决定采用Apache POI来处理这一问题。

一开始先自己用Excel 2003写了一个测试文件,导入POI接口时是能够正常读取Excel文件的。

但后来,使用客户提供的Excel文件时,出现了如下的错误:

 

    Invalid header signature; read 4503599627764745, expected -2226271756974174256

 

经过分析得知,客户的Excel文件是从第三方软件导出的,大约是Excel 4.0或者根本不合标准的文件头。简单的解决办法就是用Excel2003打开客户提供的文件,然后另存为Excel 2003格式,文件头就可以得到修复,用POI打开就没有问题了。

 

但是,客户是对电脑非常不熟悉的人,让他们作此操作真是非常麻烦,而且还要安装了Office 2003才行。后来找到一个解决办法:

 

发现了一款叫Advanced Excel Repair的软件,能够对各个版本的、损坏的Excel都做出有效的修复,最后修复为Excel 2003格式。修复后的Excel文件就可以让POI正常读取、解析了。

另外的问题是,AER软件是共享软件,需要下载破解版的,下载地址是:http://www.hanzify.org/index.php?Go=Show::List&ID=8805。还有就是,该软件虽然有命令行模式的运行办法,但修复结束后会弹出一个对话框让用户确认。在后台自动运行的方式下,会生成该程序的多个实例,消耗系统资源。解决办法就是,让Java等待一段时间后,特别杀掉这个进程,让其释放资源。

 

发现了该解决方案的一个重要依赖,就是要安装Excel 2003以上版本,估计这个AER软件要调用相关的Excel Dll来修复文件。这一论断已经经过验证。

另外,上述汉化破解版本的AER可能含有后门或者病毒,值得注意!

 

Java代码如下: 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值