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在XP下IIS和Apache2服务器上的安装
Sep 05 PHP
php+oracle 分页类
Oct 09 PHP
PHP获得用户使用的代理服务器ip即真实ip
Dec 31 PHP
上传文件先创建目录 再上传到目录里面去
Dec 29 PHP
ThinkPHP表单自动验证实例
Oct 13 PHP
smarty模板引擎基础知识入门
Mar 30 PHP
php专用数组排序类ArraySortUtil用法实例
Apr 03 PHP
php获取网页里所有图片并存入数组的方法
Apr 06 PHP
PHP版微信小店接口开发实例
Nov 12 PHP
Yii 2.0自带的验证码使用经验分享
Jun 19 PHP
Laravel中错误与异常处理的用法示例
Sep 16 PHP
Swoole4.4协程抢占式调度器详解
May 23 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 面向对象的一个例子
2011/04/12 PHP
zf框架的Filter过滤器使用示例
2014/03/13 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
基于jquery实现图片广告轮换效果代码
2011/07/07 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
JavaScript调用客户端Java程序的方法
2015/07/27 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
2016/08/01 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
JS前端加密算法示例
2016/12/22 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
JS面试题大坑之隐式类型转换实例代码
2018/10/14 Javascript
JavaScript中this的全面解析及常见实例
2019/05/14 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
微信小程序清空输入框信息与实现屏幕往上滚动的示例代码
2020/06/23 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
python字符串的常用操作方法小结
2016/05/21 Python
python获取list下标及其值的简单方法
2016/09/12 Python
python2.7到3.x迁移指南
2018/02/01 Python
django 外键model的互相读取方法
2018/12/15 Python
使用Python制作新型冠状病毒实时疫情图
2020/01/28 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
大学活动总结模板
2014/07/10 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
授权收款委托书
2014/09/23 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
化妆品促销活动总结
2015/05/07 职场文书
《女娲补天》教学反思
2016/02/20 职场文书
2016年基层党组织公开承诺书
2016/03/25 职场文书