PHPExcel导入EXCEL文件时LOAD方法出错
PHPExcel是处理EXCEL文件导入导出的常用工具,以前的项目中用过很多次,都没发现问题。然而最近小卓打算把一个完成测试的项目部署到新服务器时,却发现PHPExcel导入Excel文件的功能失效了,进一步定位到了在用LOAD方法加载上传的Excel文件时有出错。
既然定位到了出错的位置,自然是上网问度娘了,搜索一番后发现大概是两种说法:
- 提议要在LOAD之前加上$phpexcel = new PHPExcel();来创建一个创建空白文档;
- 建议检查Excel文件的路径。
然而逐一试过后发现都不能解决此处遇到的问题。这时回过头一想,代码是同步过来的,也就是说跟测试服务器上的是一样的,而在测试服务器上代码是正常测试过的,所以LOAD方法出错不可能是代码方面的错误引起的,而只有可能是服务器配置上的问题,到这里有了个大概的方向。
那到底是少了什么配置呢?度娘上没答案只有求助与谷歌了,一番搜索后终于发现一个 有意思的提示:
Try to make sure zip extension is enabled in php.ini: extension=php_zip.dll
虽然人家是在IIS上的项目,但很明显问题跟php-zip模块有关。为什么需要zip模块呢?提到zip模块,我突然想起了以前解析doc和docx的文档结构时,可以把文件强制改后缀为.zip文件,然后就可以解压出文档结构。既然doc和docx实际都是zip文件,那么xls和xlsx是不是也有可能是。这样服务器需要支持zip模块来解析微软的文件格式也就可以理解了。
于是在两服务器上php -m检查了一下现有的模块,发现果然测试服务器上有zip模块,而新服务器上没有。于是,在新服务器上安装zip模块:
sudo apt-get install php-zip
完成zip模块安装后,LOAD方法就不再报错了,PHPExcel就可以正常导入EXCEL文件到数据库了。