A-A+

thinkphp插件phpexcel导入xlsx文件报错

2017年09月26日 PHP技术文章 暂无评论 阅读 0 views 次

在做ECSHOP商城项目的时候,需要生成一千个体验码,而且还要随机不重复的,当用户使用体验码购买商品的时候就可以进行全返操作了,经理给我发来了一个excel的.xlsx后缀的文件,里面有一千个不重复的体验码,需要导入到ECSHOP数据库里面。

本来考虑到使用一个小工具或者excel导出一个sql,但是找了半天也没找到,这个时候想到thinkphp框架里面原来自己做的有一个导入.xlsx文件到mysql数据库数据的功能,好了,直接修改一下导入就OK了。

实际上下载好 PHPExcel 插件之后,在普通的PHP文件里面都可以进行导入的,好了,直接看代码吧。

  1. include 'classes/PHPExcel/IOFactory.php';  
  2. $inputFileName = $target;  
  3.   
  4. $objReader = new PHPExcel_Reader_Excel5();   
  5. $objPHPExcel = $objReader->load($inputFileName);  
  6. $sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);  
  7. $count = count($sheetData);  
  8. for($i=1;$i<=$count;$i++)  
  9. //www.xiariboke.net  
  10.  echo (iconv('utf-8','gbk',$sheetData[$i]['A'])).'<hr />';  
  11. }  

大概就是这个样子,但导入的时候却出现如下的错误:

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 之前做如下的判断:

  1. if$extension =='xlsx' )  
  2. {  
  3.  $objReader = new PHPExcel_Reader_Excel2007();  
  4. }  
  5. else  
  6. {  
  7.  $objReader = new PHPExcel_Reader_Excel5();  
  8. }  

也就是定义了,只要是 .xlsx 后缀格式的excel就实例化 PHPExcel_Reader_Excel2007,而如果是 .xls 后缀格式的 excel 就实例化 PHPExcel_Reader_Excel5,OK,最后问题解决,完美导入一千条数据。

标签:

给我留言