由于功能需求需要读取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文件经过编辑后都会被卡巴斯基加密,于是我新建了一个文件,报错就消失了,但是如何对加密文件进行编辑,仍然头疼中。。。