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


Posted in PHP onApril 14, 2020

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

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

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

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

Excel截图如下:

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

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

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

<pre>Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => 测试数据001
                    [1] =>
                    [2] => 联系人1
                    [3] => 女
                    [4] =>
                    [5] =>
                    [6] =>
                    [7] =>
                    [8] =>
                    [9] =>
                    [10] =>
                    [11] =>
                    [12] =>
                )
 
            [1] => Array
                (
                    [0] => 测试数据002
                    [1] =>
                    [2] => 联系人2
                    [3] => 女
                    [4] =>
                    [5] =>
                    [6] =>
                    [7] =>
                    [8] =>
                    [9] =>
                    [10] =>
                    [11] =>
                    [12] =>
                )
 
        )
 
    [1] => Array
        (
            [0] => Array
                (
                    [0] => 测试数据014
                    [1] =>
                    [2] => 联系人13
                    [3] => 女
                    [4] =>
                    [5] =>
                    [6] =>
                    [7] =>
                    [8] =>
                    [9] =>
                    [10] =>
                    [11] =>
                    [12] =>
                )
 
        )
 
    [2] => Array
        (
            [0] => Array
                (
                    [0] => 测试数据015
                    [1] =>
                    [2] => 联系人13
                    [3] => 女
                    [4] =>
                    [5] =>
                    [6] =>
                    [7] =>
                    [8] =>
                    [9] =>
                    [10] =>
                    [11] =>
                    [12] =>
                )
 
        )
 
    [3] => Array
        (
        )
 
)
</pre>

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

PS:关于PHPExcel文件可至此下载 https://3water.com/codes/194070.html。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
火车采集器 免费版使出收费版本功能实现原理
Sep 17 PHP
php 文章采集正则代码
Dec 28 PHP
PHP调用Twitter的RSS的实现代码
Mar 10 PHP
PHPExcel读取Excel文件的实现代码
Dec 06 PHP
PHP的可变变量名的使用方法分享
Feb 05 PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 PHP
phpmailer发送gmail邮件实例详解
Jun 24 PHP
PHP中的use关键字概述
Jul 23 PHP
php显示指定目录下子目录的方法
Mar 20 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
Mar 21 PHP
php的laravel框架快速集成微信登录的方法
Dec 12 PHP
php提高脚本性能的4个技巧
Aug 18 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
Apr 14 #PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
Apr 13 #PHP
PHP 对象接口简单实现方法示例
Apr 13 #PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
Apr 13 #PHP
yii2.0框架多模型操作示例【添加/修改/删除】
Apr 13 #PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
Apr 13 #PHP
php回调函数处理数组操作示例
Apr 13 #PHP
You might like
中英文字符串翻转函数
2008/12/09 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
2014/09/27 PHP
php实现粘贴截图并完成上传功能
2015/05/17 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
PHP容器类的两种实现方式示例
2019/07/24 PHP
JS 建立对象的方法
2007/04/21 Javascript
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
2011/11/21 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
理解javascript中Map代替循环
2016/02/26 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
node.js 抓取代理ip实例代码
2017/04/30 Javascript
手写Node静态资源服务器的实现方法
2018/03/20 Javascript
vue watch深度监听对象实现数据联动效果
2018/08/16 Javascript
详解Vue 单文件组件的三种写法
2020/02/19 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
详解ES6中class的实现原理
2020/10/03 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
python实现发送邮件及附件功能
2021/03/02 Python
Django实现快速分页的方法实例
2017/10/22 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
PyQt Qt Designer工具的布局管理详解
2019/08/07 Python
python3中sys.argv的实例用法
2020/04/24 Python
python对一个数向上取整的实例方法
2020/06/18 Python
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
教师求职推荐信范文
2013/11/20 职场文书
应届大学生自荐信
2013/12/05 职场文书
应届生求职信范文
2014/06/30 职场文书
民事诉讼代理授权委托书
2014/10/11 职场文书
自愿离婚协议书范本
2015/01/26 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书