thinkPHP5框架导出Excel文件简单操作示例


Posted in PHP onAugust 03, 2018

本文实例讲述了thinkPHP5框架导出Excel文件简单操作。分享给大家供大家参考,具体如下:

1. 首先安装PHPExcel 这里用composer安装

composer require phpoffice/phpexcel

2. 在控制类引用

use PHPExcel_IOFactory;
use PHPExcel;

3. 在控制其中书写导出方法

/**
 * 导出迟到数据
 */
public function export_later()
{
  $date = explode("-",input("get.date"));
  $_opt['year'] = $date[0];
  $_opt['month'] = $date[1];
  $laterArray = Db::name('user')->select();//查找user表数据
  $xlsName = $_opt['month']."月迟到早退数据统计";
  $xlsCell = array(
    array('user_name','姓名'),
    array('user_accounts','工号'),
    array('later_times','迟到次数'),
    array('total_later','迟到累计(分钟)'),
    array('early_times','早退次数'),
    array('total_early','早退累计(分钟)'),
  );//查出字段输出对应Excel对应的列名
  //公共方法调用
  export_excel($xlsName,$xlsCell,$laterArray);
}
/**
 * 公共数据导出实现功能
 * @param $expTitle 导出文件名
 * @param $expCellName 导出文件列名称
 * @param $expTableData 导出数据
 */
function export_excel($expTitle,$expCellName,$expTableData)
{
  $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称
  $fileName = $expTitle . date('_Ymd');//or $xlsTitle 文件名称可根据自己情况设定
  $cellNum = count($expCellName);
  $dataNum = count($expTableData);
  $objPHPExcel = new PHPExcel();//方法一
  $cellName = array('A','B', 'C','D', 'E', 'F','G','H','I', 'J', 'K','L','M', 'N', 'O', 'P', 'Q','R','S', 'T','U','V', 'W', 'X','Y', 'Z', 'AA',
    'AB', 'AC','AD','AE', 'AF','AG','AH','AI', 'AJ', 'AK', 'AL','AM','AN','AO','AP','AQ','AR', 'AS', 'AT','AU', 'AV','AW', 'AX',
    'AY', 'AZ');
  //设置头部导出时间备注
  $objPHPExcel->getActiveSheet(0)->mergeCells('A1:' . $cellName[$cellNum - 1] . '1');//合并单元格
  $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle . ' 导出时间:' . date('Y-m-d H:i:s'));
  //设置列名称
  for ($i = 0; $i < $cellNum; $i++) {
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i] . '2', $expCellName[$i][1]);
  }
  //赋值
  for ($i = 0; $i < $dataNum; $i++) {
    for ($j = 0; $j < $cellNum; $j++) {
      $objPHPExcel->getActiveSheet(0)->setCellValue(
        $cellName[$j] . ($i + 3), $expTableData[$i][$expCellName[$j][0]]
      );
    }
  }
  ob_end_clean();//这一步非常关键,用来清除缓冲区防止导出的excel乱码
  header('pragma:public');
  header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $xlsTitle . '.xls"');
  header("Content-Disposition:attachment;filename=$fileName.xls");//"xls"参考下一条备注
  $objWriter = \PHPExcel_IOFactory::createWriter(
    $objPHPExcel, 'Excel5'
  );//"Excel2007"生成2007版本的xlsx,"Excel5"生成2003版本的xls
  $objWriter->save('php://output');
}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
实用函数3
Nov 08 PHP
台湾中原大学php教程孙仲岳主讲
Jan 07 PHP
用PHP实现读取和编写XML DOM代码
Apr 07 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
Apr 12 PHP
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
May 29 PHP
PHP实现HTML生成PDF文件的方法
Nov 07 PHP
浅谈使用PHP开发微信支付的流程
Oct 04 PHP
php+ajax无刷新上传图片的实现方法
Dec 06 PHP
浅谈Laravel核心解读之Console内核
Dec 02 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
May 28 PHP
php设计模式之观察者模式定义与用法经典示例
Sep 19 PHP
PHP 对象接口简单实现方法示例
Apr 13 PHP
PHP命名空间namespace及use的简单用法分析
Aug 03 #PHP
PHP后台实现微信小程序登录
Aug 03 #PHP
thinkPHP5框架闭包函数与子查询传参用法示例
Aug 02 #PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 #PHP
lnmp安装多版本PHP共存的方法详解
Aug 02 #PHP
Laravel5框架添加自定义辅助函数的方法
Aug 01 #PHP
PHP实现数组根据某个单元字段排序操作示例
Aug 01 #PHP
You might like
PHP中strtotime函数使用方法分享
2012/01/10 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
Linux下安装oracle客户端并配置php5.3
2014/10/12 PHP
浅谈PHP值mysql操作类
2016/06/29 PHP
php获取开始与结束日期之间所有日期的方法
2016/11/29 PHP
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
JS控制图片等比例缩放的示例代码
2013/12/24 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
微信小程序用户拒绝授权的处理方法详解
2019/09/20 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
[01:31:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第二场 1月10日
2021/03/11 DOTA
Python格式化日期时间操作示例
2018/06/28 Python
Django 用户认证组件使用详解
2019/07/23 Python
Python集合操作方法详解
2020/02/09 Python
浅谈Python中range与Numpy中arange的比较
2020/03/11 Python
keras实现VGG16方式(预测一张图片)
2020/07/07 Python
详解Python 循环嵌套
2020/07/09 Python
python openCV自制绘画板
2020/10/27 Python
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
HTML5使用drawImage()方法绘制图像
2014/06/23 HTML / CSS
国际贸易毕业生自荐书
2014/06/22 职场文书
安全责任书范文
2014/08/25 职场文书
公司领导班子民主生活会对照检查材料
2014/10/02 职场文书
党的群众路线教育实践活动对照检查剖析材料
2014/10/09 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
2015年清明节扫墓演讲稿
2015/03/18 职场文书
门球健将观后感
2015/06/16 职场文书
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis