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 09 PHP
通过php快速统计某个数据库中每张表的数据量
Sep 04 PHP
PHP调试函数和日志记录函数分享
Jan 31 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
Sep 29 PHP
基于PHP实现数据分页显示功能
May 26 PHP
微信支付开发交易通知实例
Jul 12 PHP
SAE实时日志接口SDK用法示例
Oct 09 PHP
PHP基于DOMDocument解析和生成xml的方法分析
Jul 17 PHP
PHP使用PDO访问oracle数据库的步骤详解
Sep 29 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
Apr 24 PHP
YII2框架中actions的作用与使用方法示例
Mar 13 PHP
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
Apr 11 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动态生成虚拟现实VRML网页
2006/10/09 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
php生成curl命令行的方法
2015/12/14 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
PHP获取远程http或ftp文件的md5值的方法
2019/04/15 PHP
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
js异常捕获方法介绍
2013/04/10 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
AngularJS优雅的自定义指令
2016/07/01 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
BootStrap下的弹出框加载select2框架失败的解决方法
2017/08/31 Javascript
微信小程序视图template模板引用的实例详解
2017/09/20 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
2017/12/25 jQuery
VUE预渲染及遇到的坑
2018/09/03 Javascript
原生js实现each方法实例代码详解
2019/05/27 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
高效测试用例组织算法pairwise之Python实现方法
2017/07/19 Python
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
Python内存读写操作示例
2018/07/18 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
Python爬虫抓取技术的一些经验
2019/07/12 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
Python实现SMTP邮件发送
2020/06/16 Python
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
原料仓仓管员岗位职责
2014/07/08 职场文书
公司股东合作协议书
2014/09/14 职场文书
2014年采购部工作总结
2014/11/20 职场文书
目标责任书格式范文
2015/05/11 职场文书
创业计划书之都市休闲农庄
2019/12/28 职场文书
利用python做表格数据处理
2021/04/13 Python