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 已经成熟
Dec 04 PHP
菜鸟学PHP之Smarty入门
Jan 04 PHP
php堆排序(heapsort)练习
Nov 13 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
php实现通用的信用卡验证类
Mar 24 PHP
php代码架构的八点注意事项
Jan 25 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
Feb 26 PHP
session 加入redis的实现代码
Jul 15 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
Dec 14 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
Laravel框架实现多数据库连接操作详解
Jul 12 PHP
php实现微信和支付宝支付的示例代码
Aug 11 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实现的比较完善的购物车类
2014/12/02 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
PHP反射基础知识回顾
2020/09/10 PHP
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
jQuery获取注册信息并提示实现代码
2013/04/21 Javascript
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
判断window.onload是否多次使用的方法
2014/09/21 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
js实现格式化金额,字符,时间的方法
2015/02/26 Javascript
js实现防止被iframe的方法
2015/07/03 Javascript
javascript从定义到执行 你不知道的那些事
2016/01/04 Javascript
Bootstrap响应式侧边栏改进版
2016/09/17 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
2017/03/28 jQuery
Javascript实现运算符重载详解
2018/04/07 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
JavaScript实现拖拽效果
2020/03/16 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
[43:36]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python使用xmlrpc实例讲解
2013/12/17 Python
Python库urllib与urllib2主要区别分析
2014/07/13 Python
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
2017/12/25 Python
python实现批量视频分帧、保存视频帧
2019/05/31 Python
Python json格式化打印实现过程解析
2020/07/21 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
护理学毕业生自荐信
2013/10/02 职场文书
幼儿园美术教学反思
2014/01/31 职场文书
文明班集体申报材料
2014/05/23 职场文书
成都人事代理协议书
2014/10/25 职场文书
故宫英文导游词
2015/01/31 职场文书
2016年基层党组织创先争优承诺书
2016/03/25 职场文书
Python中for后接else的语法使用
2021/05/18 Python
HTML基本元素标签介绍
2022/02/28 HTML / CSS