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 24 PHP
php中使用cookie来保存用户登录信息的实现代码
Mar 08 PHP
新手菜鸟必读:session与cookie的区别
Aug 22 PHP
PHP迭代器的内部执行过程详解
Nov 12 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
php中用memcached实现页面防刷新功能
Aug 19 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
Oct 31 PHP
smarty模板引擎之内建函数用法
Mar 30 PHP
ThinkPHP安装和设置
Jul 27 PHP
PHP判断字符串长度的两种方法很实用
Sep 22 PHP
PHP Static延迟静态绑定用法分析
Mar 16 PHP
如何在PHP中生成随机数
Jun 04 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 SQL Injection with MySQL
2011/02/27 PHP
PHP性能优化 产生高度优化代码
2011/07/22 PHP
解析thinkphp中的M()与D()方法的区别
2013/06/22 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
2014/02/13 PHP
PHP设计模式之PHP迭代器模式讲解
2019/03/22 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
把Node.js程序加入服务实现随机启动
2015/06/25 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
JS实现批量上传文件并显示进度功能
2017/06/27 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
2017/07/10 Javascript
js实现音乐播放控制条
2017/09/09 Javascript
vue写h5页面的方法总结
2019/02/12 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
nodeJs的安装与npm全局环境变量的配置详解
2020/01/06 NodeJs
Python连接DB2数据库
2016/08/27 Python
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
澳大利亚香水在线:Price Rite Mart
2017/12/28 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
《自然之道》教学反思
2014/02/11 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
党校学习心得体会范文
2014/09/09 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
工作收入证明模板
2014/10/10 职场文书
帝企鹅日记观后感
2015/06/10 职场文书
手把手教你导入Go语言第三方库
2021/08/04 Golang
Go语言编译原理之源码调试
2022/08/05 Golang