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 相关文章推荐
PHP 创建文件(文件夹)以及目录操作代码
Mar 04 PHP
php的memcached客户端memcached
Jun 14 PHP
header跳转和include包含问题详解
Sep 08 PHP
解析MySql与Java的时间类型
Jun 22 PHP
php设置session值和cookies的学习示例
Mar 21 PHP
PHP内存缓存Memcached类实例
Dec 08 PHP
php强制更新图片缓存的方法
Feb 11 PHP
php生成RSS订阅的方法
Feb 13 PHP
PHP实现仿Google分页效果的分页函数
Jul 29 PHP
php while循环控制的简单实例
May 30 PHP
php数组指针操作详解
Feb 14 PHP
Laravel5.5 动态切换多语言的操作方式
Oct 25 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
php使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
php绘图之在图片上写中文和英文的方法
2015/01/24 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
workerman结合laravel开发在线聊天应用的示例代码
2018/10/30 PHP
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
使用纯javascript实现经典扫雷游戏
2015/04/23 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
在windows上用nodejs搭建静态文件服务器的简单方法
2016/08/11 NodeJs
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
javascript中apply/call和bind的使用
2017/02/15 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
javascript验证form表单数据的案例详解
2019/03/25 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
基于hashlib模块--加密(详解)
2017/06/21 Python
朴素贝叶斯Python实例及解析
2018/11/19 Python
Python小进度条显示代码
2019/03/05 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
HTML5触摸事件(touchstart、touchmove和touchend)的实现
2020/05/08 HTML / CSS
大学毕业生通用求职信
2013/09/28 职场文书
宿舍打麻将检讨书
2014/01/24 职场文书
创业计划书的主要内容有哪些
2014/01/29 职场文书
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
出纳试用期自我评价
2015/03/10 职场文书
部门主管竞聘书
2015/09/15 职场文书
企业团队精神心得体会
2016/01/19 职场文书
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python
Mysql如何查看是否使用到索引
2022/12/24 MySQL