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之数据库操作详解及乱码解决!
Jan 02 PHP
PHP中替换换行符的几种方法小结
Oct 15 PHP
php对csv文件的读取,写入,输出下载操作详解
Aug 10 PHP
PHP的命令行命令使用指南
Aug 18 PHP
PHP版单点登陆实现方案的实例
Nov 17 PHP
php防止sql注入的方法详解
Feb 20 PHP
PHP去除字符串最后一个字符的三种方法实例
Mar 01 PHP
用php+ajax新建流程(请假、进货、出货等)
Jun 11 PHP
PHP使用Redis实现防止大并发下二次写入的方法
Oct 09 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
Apr 27 PHP
php实现微信支付之退款功能
May 30 PHP
关于laravel后台模板laravel-admin select框的使用详解
Oct 03 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的String类代码
2010/04/20 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
php开发时容易忘记的一些技术细节
2016/02/03 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
jQuery插件 selectToSelect使用方法
2013/10/02 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
jQuery中ajax获取数据赋值给页面的实例
2017/12/31 jQuery
微信小程序开发之自定义tabBar的实现
2018/09/06 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
python 实现归并排序算法
2012/06/05 Python
linux系统使用python监控apache服务器进程脚本分享
2014/01/15 Python
实现python版本的按任意键继续/退出
2016/09/26 Python
利用Python抓取行政区划码的方法
2016/11/28 Python
python:pandas合并csv文件的方法(图书数据集成)
2018/04/12 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
在线购买澳大利亚设计师手拿包和奢华晚装手袋:Olga Berg
2019/03/20 全球购物
教师推荐信范文
2013/11/24 职场文书
《桂林山水》教学反思
2014/02/08 职场文书
小学数学国培感言
2014/03/10 职场文书
公司口号大全
2014/06/11 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
幼师辞职信怎么写
2015/02/27 职场文书
医学生自荐信范文
2015/03/05 职场文书
小学英语教学反思范文
2016/02/15 职场文书
2019经典广告词集锦!
2019/07/02 职场文书