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的历史和优缺点
Oct 09 PHP
一个捕获函数输出的函数
Feb 14 PHP
通过具体程序来理解PHP里面的抽象类
Jan 28 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
Nov 02 PHP
通过PHP修改Linux或Unix口令的方法分享
Jan 30 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
Aug 20 PHP
php生成xml时添加CDATA标签的方法
Oct 17 PHP
使用PHP生成图片的缩略图的方法
Aug 18 PHP
php unicode编码和字符串互转的方法
Aug 12 PHP
thinkphp3.2.0 setInc方法 源码全面解析
Jan 29 PHP
基于php双引号中访问数组元素报错的解决方法
Feb 01 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
Jun 22 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抓即时股票信息
2006/10/09 PHP
用PHP动态生成虚拟现实VRML网页
2006/10/09 PHP
用PHP为SHOPEX增加日志功能代码
2010/07/02 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
2016/06/12 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
2018/08/30 PHP
Javascript string 扩展库代码
2010/04/09 Javascript
js 利用image对象实现图片的预加载提高访问速度
2013/03/29 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
纯javascript实现四方向文本无缝滚动效果
2015/06/16 Javascript
js实现网页收藏功能
2015/12/17 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
vue之数据交互实例代码
2017/06/20 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
Nuxt 项目性能优化调研分析
2020/11/07 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
2020/12/14 Vue.js
Python的Tornado框架实现异步非阻塞访问数据库的示例
2016/06/30 Python
Scrapy-redis爬虫分布式爬取的分析和实现
2017/02/07 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
深入浅出CSS3 background-clip,background-origin和border-image教程
2011/01/27 HTML / CSS
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
草莓网官网:StrawberryNET
2019/08/21 全球购物
铁路个人事迹材料
2014/01/30 职场文书
微信营销策划方案
2014/02/24 职场文书
元旦晚会感言
2014/03/12 职场文书
中班下学期幼儿评语
2014/12/30 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
小学生勤俭节约倡议书
2015/04/29 职场文书
高中运动会广播稿
2015/08/19 职场文书
用Python将库打包发布到pypi
2021/04/13 Python
pytorch中的torch.nn.Conv2d()函数图文详解
2022/02/28 Python