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连接mysql数据库代码
Mar 10 PHP
php注销代码(session注销)
May 31 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
Apr 24 PHP
php检查字符串中是否包含7位GSM字符的方法
Mar 17 PHP
php将日期格式转换成xx天前的格式
Apr 16 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
举例详解PHP脚本的测试方法
Aug 05 PHP
简单谈谈PHP中strlen 函数
Feb 27 PHP
php关联数组与索引数组及其显示方法
Mar 12 PHP
PHP 对象接口简单实现方法示例
Apr 13 PHP
PHP const定义常量及global定义全局常量实例解析
May 28 PHP
基于php+MySql实现学生信息管理系统实例
Aug 04 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 格式化数字的时候注意数字的范围
2010/04/13 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
2015/07/29 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
laravel利用中间件做防非法登录和权限控制示例
2019/10/21 PHP
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
Prototype 学习 工具函数学习($A方法)
2009/07/12 Javascript
bgsound 背景音乐 的一些常用方法及特殊用法小结
2010/05/11 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
2014/07/09 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
Node.js 8 中的重要新特性
2017/06/28 Javascript
详解js静态资源文件请求的处理
2017/08/01 Javascript
轻松理解vue的双向数据绑定问题
2017/10/30 Javascript
详解React开发必不可少的eslint配置
2018/02/05 Javascript
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
基于python的七种经典排序算法(推荐)
2016/12/08 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
python 串口读取+存储+输出处理实例
2019/12/26 Python
对Pytorch中Tensor的各种池化操作解析
2020/01/03 Python
python 实现端口扫描工具
2020/12/18 Python
鱼油专家:Omegavia
2016/10/10 全球购物
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
June Jacobs尊积帕官网:知名的spa水疗护肤品牌
2019/03/21 全球购物
波兰汽车配件网上商店:iParts.pl
2020/09/08 全球购物
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
中专毕业生自我鉴定范文
2013/11/09 职场文书
银行个人求职自荐信范文
2013/12/16 职场文书
公司离职证明标准样本
2014/10/05 职场文书