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 27 PHP
php 运行效率总结(提示程序速度)
Nov 26 PHP
PHP curl 并发最佳实践代码分享
Sep 05 PHP
PHP四舍五入精确小数位及取整
Jan 14 PHP
php上传图片存入数据库示例分享
Mar 11 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
Oct 24 PHP
php similar_text()函数的定义和用法
May 12 PHP
iOS10推送通知开发教程
Sep 19 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
Feb 18 PHP
php生成0~1随机小数的方法(必看)
Apr 05 PHP
自制PHP框架之设计模式
May 07 PHP
PHP查找一列有序数组是否包含某值的方法
Feb 07 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
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
人族 Terran 魔法与科技
2020/03/14 星际争霸
中国广播史趣谈 — 几个历史第一次
2021/03/01 无线电
第十一节 重载 [11]
2006/10/09 PHP
繁体中文转换为简体中文的PHP函数
2006/10/09 PHP
Php Image Resize图片大小调整的函数代码
2011/01/17 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
2014/02/13 PHP
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
js replace正则表达式应用案例讲解
2013/01/17 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
封装了jQuery的Ajax请求全局配置
2015/02/05 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
IntelliJ IDEA 安装vue开发插件的方法
2017/11/21 Javascript
简单的三步vuex入门
2018/05/20 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
详解vue微信网页授权最终解决方案
2019/06/16 Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
2019/09/10 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
Windows平台Python连接sqlite3数据库的方法分析
2017/07/12 Python
python机器学习之神经网络(一)
2017/12/20 Python
python 求一个列表中所有元素的乘积实例
2019/06/11 Python
python 两个数据库postgresql对比
2019/10/21 Python
Python的几种主动结束程序方式
2019/11/22 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
2020/09/22 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
婚庆司仪开场白
2015/05/29 职场文书
详解Python 3.10 中的新功能和变化
2021/04/28 Python
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript