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 相关文章推荐
用PHP实现小型站点广告管理
Oct 09 PHP
PHP 开源框架22个简单简介
Aug 24 PHP
关于php curl获取301或302转向的网址问题的解决方法
Jun 02 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
Jul 14 PHP
joomla jce editor 解决上传中文名文件失败问题
Jun 09 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
Aug 31 PHP
分享50个提高PHP执行效率的技巧
Dec 26 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
Apr 04 PHP
PHP区块查询实现方法分析
May 12 PHP
PHP进阶学习之反射基本概念与用法分析
Jun 18 PHP
PHP中遍历数组的三种常用方法实例分析
Jun 24 PHP
php+websocket 实现的聊天室功能详解
May 27 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
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
jquery模拟进度条实现方法
2015/08/03 Javascript
JS实现横向拉伸动感伸缩菜单效果代码
2015/09/04 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
js实现增加数字显示的环形进度条效果
2017/02/05 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
微信小程序实现banner图轮播效果
2020/06/28 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
2020/07/30 Javascript
[01:27:43]VGJ.S vs TNC Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
jupyter安装小结
2016/03/13 Python
Python算法之求n个节点不同二叉树个数
2017/10/27 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
Python魔法方法功能与用法简介
2019/04/04 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
2020/02/22 Python
python文件操作seek()偏移量,读取指正到指定位置操作
2020/07/05 Python
解决python3.6用cx_Oracle库连接Oracle的问题
2020/12/07 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
PHP面试题集
2016/12/18 面试题
摄影助理岗位职责
2014/02/07 职场文书
团代会宣传工作方案
2014/05/08 职场文书
2014年英语工作总结
2014/12/20 职场文书
工作试用期自我评价
2015/03/10 职场文书
慈善献爱心倡议书
2015/04/27 职场文书
电影雷锋观后感
2015/06/10 职场文书
PL350与SW11的比较
2021/04/22 无线电
postgresql无序uuid性能测试及对数据库的影响
2021/06/11 PostgreSQL
SQL基础的查询语句
2021/11/11 MySQL