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 相关文章推荐
同台服务器使用缓存APC效率高于Memcached的演示代码
Feb 16 PHP
php stream_get_meta_data返回值
Sep 29 PHP
md5 16位二进制与32位字符串相互转换示例
Dec 30 PHP
PHP字符串的递增和递减示例介绍
Feb 11 PHP
php根据操作系统转换文件名大小写的方法
Feb 24 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
Dec 24 PHP
PHP实现的策略模式简单示例
Aug 25 PHP
PHP分页显示的方法分析【附PHP通用分页类】
May 10 PHP
laravel中的一些简单实用功能
Nov 03 PHP
thinkphp5实现无限级分类
Feb 18 PHP
基于PHP实现短信验证码发送次数限制
Jul 11 PHP
PHP中国际化的字符串排序和比较对象详解
Aug 23 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
将OICQ数据转成MYSQL数据
2006/10/09 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
Mootools 1.2教程 Tooltips
2009/09/15 Javascript
JS 实现双色表格实现代码
2009/11/24 Javascript
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
jquery图片切换插件
2015/03/16 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
2016/06/07 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
js原生实现FastClick事件的实例
2016/11/20 Javascript
SelecT下拉框选中和取值的解决方法
2016/11/22 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
Vue实例简单方法介绍
2017/01/20 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
VUE中使用MUI方法
2019/02/12 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
Python Socket编程入门教程
2014/07/11 Python
python生成式的send()方法(详解)
2017/05/08 Python
django框架实现一次性上传多个文件功能示例【批量上传】
2019/06/19 Python
pyinstaller打包程序exe踩过的坑
2019/11/19 Python
Python3和PyCharm安装与环境配置【图文教程】
2020/02/14 Python
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
大二学习计划书范文
2014/04/27 职场文书
护士感人事迹
2014/05/01 职场文书
无刑事犯罪记录证明
2014/09/18 职场文书
业务员岗位职责
2015/02/03 职场文书
2015年安全工作总结范文
2015/04/02 职场文书
运输公司工作总结
2015/08/11 职场文书
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python