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目录导航文件代码
Oct 09 PHP
PHP中文件缓存转内存缓存的方法
Dec 06 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
php获取$_POST同名参数数组的实现介绍
Jun 30 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
May 15 PHP
Smarty模板学习笔记之Smarty简介
May 20 PHP
PHP创建word文档的方法(平台无关)
Mar 29 PHP
PHP实现163邮箱自动发送邮件
Mar 29 PHP
PHP实现的文件上传类与用法详解
Jul 05 PHP
PHP定义字符串的四种方式详解
Feb 06 PHP
PHP操作XML中XPath的应用示例
Jul 04 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
Mar 29 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
中国的第一台收音机
2021/03/01 无线电
php学习之变量的使用
2011/05/29 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
[原创]网络复制内容时常用的正则+editplus
2006/11/30 Javascript
JQuery 小练习(实例代码)
2009/08/07 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
js实现页面跳转的几种方法小结
2016/05/16 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
web页面和微信小程序页面实现瀑布流效果
2018/09/26 Javascript
微信小程序实现无限滚动列表
2020/05/29 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
Python编程实现及时获取新邮件的方法示例
2017/08/10 Python
通过Python 获取Android设备信息的轻量级框架
2017/12/18 Python
Python实现动态添加属性和方法操作示例
2018/07/25 Python
10个Python小技巧你值得拥有
2018/09/29 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
NumPy 基本切片和索引的具体使用方法
2019/04/24 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
Python搭建代理IP池实现检测IP的方法
2019/10/27 Python
Python3 元组tuple入门基础
2020/02/09 Python
django实现将修改好的新模型写入数据库
2020/03/31 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
Amara美国站:英国高端家居礼品网站,世界各地的奢侈家具品牌
2017/07/26 全球购物
电大毕业生自我鉴定
2013/11/10 职场文书
消防安全检查制度
2014/02/04 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
让世界充满爱观后感
2015/06/10 职场文书
Python Parser的用法
2021/05/12 Python
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
2022/04/11 Python