ZipArchive::locateName(): Invalid or uninitialized Zip object报错原因总结

由于功能需求需要读取Excel文件,再修改其内容保存,就用到了PHPExcel类;

但是在读取的过程中就出现了ZipArchive::locateName(): Invalid or uninitialized Zip object,这个报错,耗时4个小时查询了几乎网上的所有的相关内容,基本上千篇一律就2种情况:

1.就是excel5跟excel2007的区别:

 excel5读取的是.xls后缀,适用于1993年的MicrosoftOffice5.0版本的excel文件,对于现在来说已经很老了,excel2007读取的是xlsx后缀,现在基本使用的是excel2007了;

   适用于两种后缀文件的代码,如果是因为这个原因报错的话,问题是很好解决的。

if($name =='xlsx' ){
    $objReader = PHPExcel_IOFactory::createReader('Excel2007'); 
}else{
    $objReader = PHPExcel_IOFactory::createReader('Excel5'); 
}

$objPHPExcel = $objReader->load($filename, $encode = 'utf-8');

2.ZipArchive类问题:

具体可以参考:http://www.nidecun.cn/index.php/archives/6/

如果是用PHPExcel,可以在PHPExcel\Reader\Excel2007.php下找到代码:

 

3.我碰到的就是第三种情况了,Excel文件有问题,我们公司内的office文件经过编辑后都会被卡巴斯基加密,于是我新建了一个文件,报错就消失了,但是如何对加密文件进行编辑,仍然头疼中。。。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

y_w_x_k

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值