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一些常用的正则表达式字符的一些转换
Jul 29 PHP
一个漂亮的php验证码类(分享)
Aug 06 PHP
使用php记录用户通过搜索引擎进网站的关键词
Feb 13 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
May 08 PHP
PHP curl使用实例
Jul 02 PHP
php简单备份与还原MySql的方法
May 09 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
Sep 19 PHP
Yii2中多表关联查询hasOne hasMany的方法
Feb 15 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
Jun 06 PHP
PHP使用Redis实现防止大并发下二次写入的方法
Oct 09 PHP
Laravel框架实现定时发布任务的方法
Aug 16 PHP
phpStorm2020 注册码
Sep 17 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
人族 Terran 基本策略
2020/03/14 星际争霸
《魔兽争霸3:重制版》更新 多项视觉效果调整
2020/05/04 魔兽争霸
提高Laravel应用性能方法详解
2019/06/24 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
起点页面传值js,有空研究学习下
2010/01/25 Javascript
jQuery.extend 函数的详细用法
2012/06/27 Javascript
裁剪字符串trim()自定义改进版
2013/04/10 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
jQuery仿写百度百科的目录树
2017/01/03 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
解决微信小程序中转换时间格式IOS不兼容的问题
2019/02/15 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
NProgress显示顶部进度条效果及使用详解
2019/09/21 Javascript
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
python 实现aes256加密
2020/11/27 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
美国领先的奢侈美容零售商:Bluemercury
2017/07/26 全球购物
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
上海某公司.net方向笔试题
2014/09/14 面试题
教师实习期自我鉴定
2013/10/06 职场文书
求职自荐信
2013/12/14 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
Python selenium的这三种等待方式一定要会!
2021/06/10 Python
vue+element ui实现锚点定位
2021/06/29 Vue.js
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫