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 相关文章推荐
解决控件遮挡问题:关于有窗口元素和无窗口元素
Jan 28 PHP
Mysql的GROUP_CONCAT()函数使用方法
Mar 28 PHP
php ctype函数中文翻译和示例
Mar 21 PHP
Yii使用ajax验证显示错误messagebox的解决方法
Dec 03 PHP
PHP实现搜索相似图片
Sep 22 PHP
微信支付开发订单查询实例
Jul 12 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
May 20 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
thinkPHP框架实现生成条形码的方法示例
Jun 06 PHP
Laravel用户授权系统的使用方法示例
Sep 16 PHP
php异常处理捕获错误整理
Sep 23 PHP
php统计数组不同元素的个数的实例方法
Sep 26 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 feof用来识别文件末尾字符的方法
2010/08/01 PHP
基于php无限分类的深入理解
2013/06/02 PHP
php中使用gd库实现远程图片下载实例
2015/05/12 PHP
php安全配置记录和常见错误梳理(总结)
2017/03/28 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
Javascript MD4
2006/12/20 Javascript
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
JavaScript中的Window窗口对象
2008/01/16 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
2017/03/21 jQuery
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
javascrit中undefined和null的区别详解
2019/04/07 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
JS对日期操作封装代码实例
2019/11/08 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
python为tornado添加recaptcha验证码功能
2014/02/26 Python
按日期打印Python的Tornado框架中的日志的方法
2015/05/02 Python
利用Python的Django框架生成PDF文件的教程
2015/07/22 Python
python 读取摄像头数据并保存的实例
2018/08/03 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
Python文件读写保存操作的示例代码
2018/09/14 Python
python树的同构学习笔记
2019/09/14 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
Python Numpy 控制台完全输出ndarray的实现
2020/02/19 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
2020/12/17 Python
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
英国快时尚女装购物网站:PrettyLittleThing
2018/08/15 全球购物
软件测试工程师结构化面试题库
2016/11/23 面试题
python中的sys模块和os模块
2022/03/20 Python
在Python 中将类对象序列化为JSON
2022/04/06 Python
Go web入门Go pongo2模板引擎
2022/05/20 Golang