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中通过ADODB库实现调用Access数据库之修正版本
Dec 31 PHP
PHP5.3.1 不再支持ISAPI
Jan 08 PHP
php 数组的一个悲剧?
May 11 PHP
分享一段php获取linux服务器状态的代码
May 27 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
Aug 22 PHP
PHP简单选择排序算法实例
Jan 26 PHP
PHP实现支持SSL连接的SMTP邮件发送类
Mar 05 PHP
PHP中实现crontab代码分享
Mar 26 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
Apr 20 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
Dec 07 PHP
PHP经典实用正则表达式小结
May 04 PHP
thinkPHP分页功能实例详解
May 05 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
用Simple Excel导出xls实现方法
2012/12/06 PHP
PHP设计模式之命令模式的深入解析
2013/06/13 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
thinkphp实现like模糊查询实例
2014/10/29 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
php中如何执行linux命令详解
2018/11/06 PHP
简明json介绍
2008/09/28 Javascript
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
BootStrap 导航条实例代码
2017/05/18 Javascript
微信小程序iOS下拉白屏晃动问题解决方案
2019/10/12 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
Python对列表排序的方法实例分析
2015/05/16 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
python实现多进程代码示例
2018/10/31 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
2019/06/21 Python
Python函数参数类型及排序原理总结
2019/12/19 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
pytorch中的transforms模块实例详解
2019/12/31 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
工程师岗位职责规定
2014/02/26 职场文书
大学生2014全国两会学习心得体会
2014/03/10 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
四查四看自我剖析材料
2014/09/19 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
会议接待欢迎词范文
2015/01/26 职场文书
小学教师教育随笔
2015/08/14 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP
Springboot中如何自动转JSON输出
2022/06/16 Java/Android