当前位置:首页 > PHP教程 > php高级应用 > 列表

PHPExcel实现的读取多工作表操作示例

发布:smiling 来源: PHP粉丝网  添加日期:2022-02-27 10:28:04 浏览: 评论:0 

本文实例讲述了PHPExcel实现的读取多工作表操作,分享给大家供大家参考,具体如下:

最近我们公司crm模块需要优化一下客户导入功能,之前的要求是:只需要从单个工作表中获取数据;现在的要求是:需要在多个工作表中获取对应数据,并导入数据库;

幸亏PHPExcel已经给我们提供了获取多个sheet工作表的方法,下面直接上代码:【这里我用的是tp3.2.3】

  1. /** 
  2.  * 导入excel文件 
  3.  * @param string $file excel文件路径 
  4.  * @return array    excel文件内容数组 
  5.  */ 
  6. function import_excel($file){ 
  7.   // 判断文件是什么格式 
  8.   $type = pathinfo($file);  
  9.   $type = strtolower($type["extension"]); 
  10.   if ($type=='xlsx') {  
  11.     $type='Excel2007';  
  12.   }elseif($type=='xls') {  
  13.     $type = 'Excel5';  
  14.   }  
  15.   ini_set('max_execution_time''0'); 
  16.   Vendor('PHPExcel.PHPExcel'); 
  17.   $objReader = PHPExcel_IOFactory::createReader($type);//判断使用哪种格式 
  18.   $objReader ->setReadDataOnly(true); //只读取数据,会智能忽略所有空白行,这点很重要!!! 
  19.   $objPHPExcel = $objReader->load($file); //加载Excel文件 
  20.   $sheetCount = $objPHPExcel->getSheetCount();//获取sheet工作表总个数 
  21.   $rowData = array(); 
  22.   $RowNum = 0; 
  23.   /*读取表格数据*/ 
  24.   for($i =0;$i <= $sheetCount-1;$i++){//循环sheet工作表的总个数 
  25.     $sheet = $objPHPExcel->getSheet($i); 
  26.     $highestRow = $sheet->getHighestRow(); 
  27.     $RowNum += $highestRow-1;//计算所有sheet的总行数 
  28.     $highestColumn = $sheet->getHighestColumn(); 
  29.     //从第$i个sheet的第1行开始获取数据 
  30.     for($row = 1;$row <= $highestRow;$row++){ 
  31.       //把每个sheet作为一个新的数组元素 键名以sheet的索引命名 利于后期数组的提取 
  32.       $rowData[$i][] = arrToOne($sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE)); 
  33.     } 
  34.   } 
  35.   /*删除每行表头数据*/ 
  36.   foreach($rowData as $k=>$v){ 
  37.     array_shift($rowData[$k]); 
  38.   } 
  39.   echo '<pre>'
  40.   print_r($rowData);//打印结果 
  41.   echo '</pre>'
  42.   return array("RowNum" => $RowNum,"Excel_Data" => $rowData); 

Excel截图如下:

PHPExcel实现的读取多工作表操作示例

打印结果如下:0对应第一个sheet;以此类推第3个就是最后一个sheet;

注意:当某一个sheet不存在任何数据时,我这里会创建该元素为空数组,比如下面结果的第3个元素 ;所以在插入数据库操作的时候需要再判断一下是否为空!

  1. <pre>Array 
  2.     [0] => Array 
  3.         ( 
  4.             [0] => Array 
  5.                 ( 
  6.                     [0] => 测试数据001 
  7.                     [1] => 
  8.                     [2] => 联系人1 
  9.                     [3] => 女 
  10.                     [4] => 
  11.                     [5] => 
  12.                     [6] => 
  13.                     [7] => 
  14.                     [8] => 
  15.                     [9] => 
  16.                     [10] => 
  17.                     [11] => 
  18.                     [12] => 
  19.                 ) 
  20.  
  21.             [1] => Array 
  22.                 ( 
  23.                     [0] => 测试数据002 
  24.                     [1] => 
  25.                     [2] => 联系人2 
  26.                     [3] => 女 
  27.                     [4] => 
  28.                     [5] => 
  29.                     [6] => 
  30.                     [7] => 
  31.                     [8] => 
  32.                     [9] => 
  33.                     [10] => 
  34.                     [11] => 
  35.                     [12] => 
  36.                 ) 
  37.  
  38.         ) 
  39.  
  40.     [1] => Array 
  41.         ( 
  42.             [0] => Array 
  43.                 ( 
  44.                     [0] => 测试数据014 
  45.                     [1] => 
  46.                     [2] => 联系人13 
  47.                     [3] => 女 
  48.                     [4] => 
  49.                     [5] => 
  50.                     [6] => 
  51.                     [7] => 
  52.                     [8] => 
  53.                     [9] => 
  54.                     [10] => 
  55.                     [11] => 
  56.                     [12] => 
  57.                 ) 
  58.  
  59.         ) 
  60.  
  61.     [2] => Array 
  62.         ( 
  63.             [0] => Array 
  64.                 ( 
  65.                     [0] => 测试数据015 
  66.                     [1] => 
  67.                     [2] => 联系人13 
  68.                     [3] => 女 
  69.                     [4] => 
  70.                     [5] => 
  71.                     [6] => 
  72.                     [7] => 
  73.                     [8] => 
  74.                     [9] => 
  75.                     [10] => 
  76.                     [11] => 
  77.                     [12] => 
  78.                 ) 
  79.  
  80.         ) 
  81.  
  82.     [3] => Array 
  83.         ( 
  84.         ) 
  85.  
  86. </pre> 

至此, 以上就成功获取到了每一个sheet的数据;

Tags: PHPExcel读取多工作表

分享到: