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 相关文章推荐
学习discuz php 引入文件的方法DISCUZ_ROOT
Jun 21 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
Jul 28 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
May 08 PHP
php获取一个变量的名字的方法
Sep 05 PHP
网站防止被刷票的一些思路与方法
Jan 08 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
Mar 07 PHP
浅谈PHP中其他类型转化为Bool类型
Mar 28 PHP
浅析php中array_map和array_walk的使用对比
Nov 20 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
Aug 25 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
PHP 爬取网页的主要方法
Jul 13 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入门经历和学习过程分享
2014/04/11 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
CSS常用网站布局实例
2008/04/03 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
JQuery select(下拉框)操作方法汇总
2015/04/15 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
angularjs表格分页功能详解
2016/01/21 Javascript
JavaScript实现图片轮播组件代码示例
2016/11/22 Javascript
利用angularjs1.4制作的简易滑动门效果
2017/02/28 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
2017/11/01 Javascript
基于Vue框架vux组件库实现上拉刷新功能
2017/11/28 Javascript
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
vue动画效果实现方法示例
2019/03/18 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
[05:04]DOTA2上海特级锦标赛主赛事第二日TOP10
2016/03/04 DOTA
python查找指定具有相同内容文件的方法
2015/06/28 Python
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
Pycharm最常用的快捷键及使用技巧
2020/03/05 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
python3 sorted 如何实现自定义排序标准
2020/03/12 Python
浅析Python requests 模块
2020/10/09 Python
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
英国最大的独立家具零售商:Furniture Village
2016/09/06 全球购物
简历中的自我评价范文
2014/02/05 职场文书
新书发布会策划方案
2014/06/09 职场文书
主题党日活动总结
2014/07/08 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
2015元旦标语横幅
2014/12/09 职场文书
大学生实习推荐信
2015/03/27 职场文书
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python