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 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
Jan 30 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
Nov 02 PHP
PHP学习笔记之一
Jan 17 PHP
php的list()的一步操作给一组变量进行赋值的使用
May 18 PHP
如何使用php判断服务器是否是HTTPS连接
Jul 05 PHP
Yii2前后台分离及migrate使用(七)
May 04 PHP
CI框架整合smarty步骤详解
May 19 PHP
PHP使用curl制作简易百度搜索
Nov 03 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
Nov 18 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
PHP 8新特性简介
Aug 18 PHP
Swoole源码中如何查询Websocket的连接问题详解
Aug 30 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生成静态页面详解
2006/12/05 PHP
PHP使用适合阅读的格式显示文件大小的方法
2015/03/05 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
2016/08/01 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
jquery中get和post的简单实例
2014/02/04 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
Javascript编程中几种继承方式比较分析
2015/11/28 Javascript
Angularjs中使用Filters详解
2016/03/11 Javascript
基于jquery实现智能表单验证操作
2016/05/09 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
对vue 键盘回车事件的实例讲解
2018/08/25 Javascript
在vant中使用时间选择器和popup弹出层的操作
2020/11/04 Javascript
Django中针对基于类的视图添加csrf_exempt实例代码
2018/02/11 Python
详解Python 解压缩文件
2019/04/09 Python
python实现QQ批量登录功能
2019/06/19 Python
原生python实现knn分类算法
2019/10/24 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
详解Python IO口多路复用
2020/06/17 Python
Toppik顶丰增发纤维官网:解决头发稀疏
2017/12/30 全球购物
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
西北政法大学自主招生自荐信
2014/01/29 职场文书
公路绿化方案
2014/05/12 职场文书
个性车贴标语
2014/06/24 职场文书
植树节标语
2014/06/27 职场文书
电话客服工作职责
2014/07/27 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
小孩不笨观后感
2015/06/03 职场文书
警示教育片观后感
2015/06/17 职场文书
毕业证明书
2015/06/19 职场文书
对Keras自带Loss Function的深入研究
2021/05/25 Python
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL