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 相关文章推荐
jq的get传参数在utf-8中乱码问题的解决php版
Jul 23 PHP
PHP 多维数组排序实现代码
Aug 05 PHP
php4与php5的区别小结(配置异同)
Dec 20 PHP
PHP使用数组实现队列
Feb 05 PHP
Yii查询生成器(Query Builder)用法实例教程
Sep 04 PHP
php从数据库查询结果生成树形列表的方法
Apr 17 PHP
linux下为php添加iconv模块的方法
Feb 28 PHP
Laravel实现自定义错误输出内容的方法
Oct 10 PHP
PHP面向对象程序设计之类与反射API详解
Dec 02 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 PHP
Laravel框架实现调用百度翻译API功能示例
May 30 PHP
Centos7安装swoole扩展操作示例
Mar 26 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
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
使用PHP获取网络文件的实现代码
2010/01/01 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
在PHP中使用redis
2013/11/04 PHP
php防止伪造数据从地址栏URL提交的方法
2014/08/24 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
javascript 实用的文字链提示框效果
2010/06/30 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
微信小程序 教程之wxapp 视图容器 view
2016/10/19 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
jQuery 添加元素和删除元素的方法
2020/07/15 jQuery
解决vue 退出动画无效的问题
2020/08/09 Javascript
Javascript call及apply应用场景及实例
2020/08/26 Javascript
在Python中操作字典之clear()方法的使用
2015/05/21 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
使用Python-OpenCV消除图像中孤立的小区域操作
2020/07/05 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
朗仕(Lab series)英国官网:雅诗兰黛集团男士专属护肤品牌
2017/11/28 全球购物
CHRONEXT英国:您的首选奢华腕表目的地
2020/03/30 全球购物
学院党委班子四风问题自查报告及整改措施
2014/10/25 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
检讨书之工作不认真
2019/08/14 职场文书
Pytorch 实现变量类型转换
2021/05/17 Python
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android