A-A+
thinkphp插件phpexcel导入xlsx文件报错
在做ECSHOP商城项目的时候,需要生成一千个体验码,而且还要随机不重复的,当用户使用体验码购买商品的时候就可以进行全返操作了,经理给我发来了一个excel的.xlsx后缀的文件,里面有一千个不重复的体验码,需要导入到ECSHOP数据库里面。
本来考虑到使用一个小工具或者excel导出一个sql,但是找了半天也没找到,这个时候想到thinkphp框架里面原来自己做的有一个导入.xlsx文件到mysql数据库数据的功能,好了,直接修改一下导入就OK了。
实际上下载好 PHPExcel 插件之后,在普通的PHP文件里面都可以进行导入的,好了,直接看代码吧。
- include 'classes/PHPExcel/IOFactory.php';
- $inputFileName = $target;
- $objReader = new PHPExcel_Reader_Excel5();
- $objPHPExcel = $objReader->load($inputFileName);
- $sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
- $count = count($sheetData);
- for($i=1;$i<=$count;$i++)
- { //www.xiariboke.net
- echo (iconv('utf-8','gbk',$sheetData[$i]['A'])).'<hr />';
- }
大概就是这个样子,但导入的时候却出现如下的错误:
PHPExcel_Reader_Exception: The filename .1443578799.xlsx is not recognised as an OLE file in Classes\PHPExcel\Shared\OLERead.php on line 89
.xlsx 文件应该是上传到服务器端了,但是却没能导入到 mysql 数据库,只好GG一下了。
原来是我实例化 PHPExcel 的类型弄错了,xlsx 应该是 2007 的,估计是跟版本有关吧,先不管哪些了,在导入到 mysql 之前做如下的判断:
- if( $extension =='xlsx' )
- {
- $objReader = new PHPExcel_Reader_Excel2007();
- }
- else
- {
- $objReader = new PHPExcel_Reader_Excel5();
- }
也就是定义了,只要是 .xlsx 后缀格式的excel就实例化 PHPExcel_Reader_Excel2007,而如果是 .xls 后缀格式的 excel 就实例化 PHPExcel_Reader_Excel5,OK,最后问题解决,完美导入一千条数据。