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中使用Oracle数据库(5)
Oct 09 PHP
php中计算程序运行时间的类代码
Nov 03 PHP
用php制作简单分页(从数据库读取记录)的方法详解
May 04 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
Jul 01 PHP
thinkphp判断访客为手机端或PC端的方法
Nov 24 PHP
Laravel 5框架学习之表单
Apr 08 PHP
php计算税后工资的方法
Jul 28 PHP
Zend Framework教程之MVC框架的Controller用法分析
Mar 07 PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 PHP
php png失真的原因及解决办法
Oct 24 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原生导出excel文件的两种方法(推荐)
2016/11/19 PHP
zend框架实现支持sql server的操作方法
2016/12/08 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
canvas简单快速的实现知乎登录页背景效果
2017/05/08 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
vue.js实现h5机器人聊天(测试版)
2020/07/16 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
2020/10/30 Javascript
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
python解析文件示例
2014/01/23 Python
python根据文件大小打log日志
2014/10/09 Python
Python列表生成器的循环技巧分享
2015/03/06 Python
python使用range函数计算一组数和的方法
2015/05/07 Python
python使用邻接矩阵构造图代码示例
2017/11/10 Python
pycharm远程调试openstack代码
2017/11/21 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
Python字节单位转换实例
2019/12/05 Python
Python定义一个Actor任务
2020/07/29 Python
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
Internet主要有哪些网络群组成
2015/12/24 面试题
人力资源管理毕业求职信
2014/08/05 职场文书
软件测试专业推荐信
2014/09/18 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
《我爱祖国》演讲稿1000字
2014/09/26 职场文书
在宿舍喝酒的检讨书
2014/09/28 职场文书
消防演习通知
2015/04/25 职场文书
歌剧魅影观后感
2015/06/05 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
Redis Lua脚本实现ip限流示例
2022/07/15 Redis