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中cookies使用指南
Mar 16 PHP
使用NetBeans + Xdebug调试PHP程序的方法
Apr 12 PHP
用php解析html的实现代码
Aug 08 PHP
php网上商城购物车设计代码分享
Feb 15 PHP
php curl获取网页内容(IPV6下超时)的解决办法
Jul 16 PHP
php session_start()出错原因分析及解决方法
Oct 28 PHP
怎样搭建PHP开发环境
Jul 28 PHP
php生成二维码
Aug 10 PHP
PHP实现QQ快速登录的方法
Sep 28 PHP
php 截取中英文混合字符串的方法
May 31 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
Sep 09 PHP
PhpStorm连接服务器并实现自动上传功能
Dec 09 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 session常见问题集锦及解决办法总结
2007/03/18 PHP
php模块memcache和memcached区别分析
2011/06/14 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
vue2.0 中使用transition实现动画效果使用心得
2018/08/13 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
koa-router路由参数和前端路由的结合详解
2019/05/19 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
javascript网页随机点名实现过程解析
2019/10/15 Javascript
微信小程序在text文本实现多种字体样式
2019/11/08 Javascript
Layui弹框中数据表格中可双击选择一条数据的实现
2020/05/06 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
2020/08/18 Javascript
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
Python使用googletrans报错的解决方法
2018/09/25 Python
对pyqt5多线程正确的开启姿势详解
2019/06/14 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
简单介绍python封装的基本知识
2019/08/10 Python
Python logging设置和logger解析
2019/08/28 Python
python如何求100以内的素数
2020/05/27 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
Ajax和javascript的区别
2013/07/20 面试题
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
高中数学教师求职信
2013/10/30 职场文书
工厂厂长岗位职责
2013/11/08 职场文书
关于是否需要写商业计划书
2014/02/07 职场文书
预备党员承诺书
2014/03/25 职场文书
安全生产先进个人总结
2015/02/15 职场文书
西游记读书笔记
2015/06/25 职场文书
战友聚会致辞
2015/07/28 职场文书
安全教育的主题班会
2015/08/13 职场文书