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设计模式  Command(命令模式)
Jun 17 PHP
PHP 图片上传代码
Sep 13 PHP
Php中用PDO查询Mysql来避免SQL注入风险的方法
Apr 25 PHP
解析PHP处理换行符的问题 \r\n
Jun 13 PHP
php常用ODBC函数集(详细)
Jun 24 PHP
如何利用PHP执行.SQL文件
Jul 05 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
Jun 22 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
Jul 29 PHP
php结合redis高并发下发帖、发微博的实现方法
Dec 15 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
php微信开发之图片回复功能
Jun 14 PHP
Laravel 简单实现Ajax滚动加载示例
Oct 22 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
thinkPHP中钩子的两种配置调用方法详解
2016/11/11 PHP
Joomla框架实现字符串截取的方法示例
2017/07/18 PHP
使用PHP json_decode可能遇到的坑与解决方法
2017/08/03 PHP
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
10个经典的网页鼠标特效代码
2018/01/09 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
深入解析Python中的WSGI接口
2015/05/11 Python
Django与遗留的数据库整合的方法指南
2015/07/24 Python
Python实现的选择排序算法示例
2017/11/29 Python
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
Python学习pygal绘制线图代码分享
2017/12/09 Python
python如何生成网页验证码
2018/07/28 Python
python批量赋值操作实例
2018/10/22 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
Python测试线程应用程序过程解析
2019/12/31 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
使用npy转image图像并保存的实例
2020/07/01 Python
计算机应用与科学个人的自我评价
2013/11/15 职场文书
优秀员工自荐书范文
2013/12/08 职场文书
贺卡寄语大全
2014/04/11 职场文书
男女朋友协议书
2014/04/23 职场文书
赞美老师的演讲稿
2014/05/22 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
2015年教务主任工作总结
2015/07/22 职场文书
新郎婚礼致辞
2015/07/27 职场文书
公司老总年会致辞
2015/07/30 职场文书
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL