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
建立动态的WML站点(一)
Oct 09 PHP
php include和require的区别深入解析
Jun 17 PHP
php+highchats生成动态统计图
May 21 PHP
php树型类实例
Dec 05 PHP
老版本PHP转义Json里的特殊字符的函数
Jun 08 PHP
PHP使用file_get_content设置头信息的方法
Feb 14 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
PHP使用curl制作简易百度搜索
Nov 03 PHP
Thinkphp实现站点静态化的方法详解
Mar 21 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
Aug 21 PHP
Smarty模板语法详解
Jul 20 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设计模式 Prototype (原型模式)代码
2011/06/26 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
如何让PHP编码更加好看利于阅读
2019/05/12 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
Mozilla 表达式 __noSuchMethod__
2009/04/05 Javascript
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
关于原生js中bind函数的简单实现
2016/08/10 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
2016/10/30 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
2017/02/09 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
浅谈Postman解决token传参的问题
2018/03/31 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
2020/03/12 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
在Django的模板中使用认证数据的方法
2015/07/23 Python
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
Python操作Sql Server 2008数据库的方法详解
2018/05/17 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
Django 框架模型操作入门教程
2019/11/05 Python
Python实现疫情通定时自动填写功能(附代码)
2020/05/27 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
do you have any Best Practice for testing
2016/06/04 面试题
毕业生面试求职信
2014/06/23 职场文书
土地租赁意向书
2014/07/30 职场文书
解除同居协议书
2015/01/29 职场文书
车队安全员岗位职责
2015/02/15 职场文书
世界名著读书笔记
2015/06/25 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书