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 相关文章推荐
实现“上一页”和“下一页按钮
Oct 09 PHP
mysql中存储过程、函数的一些问题
Feb 14 PHP
PHP中“简单工厂模式”实例代码讲解
Sep 04 PHP
php中字符集转换iconv函数使用总结
Oct 11 PHP
php去除数组中重复数据
Nov 18 PHP
PHP程序员必须清楚的问题汇总
Dec 18 PHP
为PHP5.4开启Zend OPCode缓存
Dec 26 PHP
PHP经典面试题集锦
Mar 19 PHP
php判断当前操作系统类型
Oct 28 PHP
解决laravel 5.1报错:No supported encrypter found的办法
Jun 07 PHP
Mac下关于PHP环境和扩展的安装详解
Oct 17 PHP
tp5修改(实现即点即改)
Oct 18 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中对xml读取的相关函数的介绍一
2008/06/05 PHP
php strcmp使用说明
2010/04/22 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
tp5.1 框架join方法用法实例分析
2020/05/26 PHP
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
js/html光标定位的实现代码
2013/09/23 Javascript
js对文章内容进行分页示例代码
2014/03/05 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
2014/08/15 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
Nodejs模块的调用操作实例分析
2018/12/25 NodeJs
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
微信小程序自定义弹窗实现详解(可通用)
2019/07/04 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
浅谈Python 中整型对象的存储问题
2016/05/16 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
django定期执行任务(实例讲解)
2017/11/03 Python
简单实现python画圆功能
2018/01/25 Python
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
python将dict中的unicode打印成中文实例
2020/05/11 Python
浅析Python __name__ 是什么
2020/07/07 Python
Python是怎样处理json模块的
2020/07/16 Python
python Matplotlib基础--如何添加文本和标注
2021/01/26 Python
CSS3点击按钮实现背景渐变动画效果
2016/10/19 HTML / CSS
全球最大的游戏市场:G2A
2018/07/05 全球购物
Python使用openpyxl复制整张sheet
2021/03/24 Python
文明和谐家庭事迹材料
2014/05/18 职场文书