一.在做PHP开发时,我们会遇到把数据导出变为execl表格的形式,使用PHPExcel就可以,下载地址:https://github.com/PHPOffice/PHPExcel,下载后会显示这么多文件(我们只要其中的Classes目录)

二.这是我在获取数据,并调用(三)的execl表格方法

//这是获取传来的时间
$times=$this->request->post("time");
$arr=[];
//有时间根据时间获取数据
if(!empty($times)){
$time = explode("~",$times,2);
$startTime=$time[0];
$endTime=$time[1];
$time=strtotime($startTime);
$time1=strtotime($endTime);
$time2=$time1+86400;
$arr['start']=date("Y-m-d H:i:s",$time);
$arr['end']=date("Y-m-d H:i:s",$time2);
}
//获取数据
$res=$this->model->dowload($arr,$this->table); foreach($res['rows'] as $key=>&$v){
$v['union_id']="\t".$v['union_id']."\t";//导出为excel时数字超过15位会转化为0,这是转变过程
}
//
$indexKey=["id","type","content","union_id","add_time"];
if(!empty($times)){
$name=$startTime."-".$endTime;//这是下载的文件名
//这是调用execl表格的方法
$this->actionExportExcel($res['rows'],$name,$indexKey,$startTime,$endTime);
}else{
$name="全部";//这是下载的文件名
//这是调用execl表格的方法
$this->actionExportExcel($res['rows'],$name,$indexKey,$startTime="",$endTime="");
}

三.(execl表格方法)把Classes目录上传至你的项目目录下,一般我时放在第三方类库下,接下来的代码就是生成execl的方法,这个方法粘贴进去就可以用,注意这个是execl表格的处理方法,你需要导出为execl表格时,你只需要调用此方法,传参数即可

/**
* 创建(导出)Excel数据表格,我创建的是根据时间筛选的
* @param array $list 要导出的数组格式的数据
* @param string $filename 导出的Excel表格数据表的文件名
* @param array $indexKey $list数组中与Excel表格表头$header中每个项目对应的字段的名字(key值)
* @param string $start 这是开始时间
* @param string $end 这是结束时间
* @param array $startRow 第一条数据在Excel表格中起始行
* @param [bool] $excel2007 是否生成Excel2007(.xlsx)以上兼容的数据表
* 比如: $indexKey与$list数组对应关系如下:
* $indexKey = array('id','username','sex','age');
* $list = array(array('id'=>1,'username'=>'YQJ','sex'=>'男','age'=>24));
*/
function actionExportExcel($list,$filename,$indexKey=array(),$start,$end,$startRow=3,$excel2007=false){
//文件引入,cls是我的第三方类库
require_once APP_ROOT.'/cls/Classes/PHPExcel.php';
require_once APP_ROOT.'/cls/Classes/PHPExcel/Writer/Excel2007.php';
//如果文件名为空,就以时间戳命名
if(empty($filename)) $filename = time();
if( !is_array($indexKey)) return false;
$header_arr = 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');
//初始化PHPExcel(),
//yii之类的有命名空间的框架用这种,我用的yii框架
$objPHPExcel = new \PHPExcel();
//ci框架就这样用
// $objPHPExcel = new PHPExcel(); //设置保存版本格式,这是yii框架之类的有命名空间框架的使用方法
if($excel2007){
$objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
$filename = $filename.'.xlsx';
}else{
$objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);
$filename = $filename.'.xls';
} //接下来就是写数据到表格里面去
$objActSheet = $objPHPExcel->getActiveSheet();
//这个你得对execl表格了解下,不了解可以看下我的截图
    //这里开始(你可以设置自己的表头结构)
if(empty($start)){
$objActSheet->setCellValue('A1', "导出时间:全部");
}else{
$objActSheet->setCellValue('A1', "导出时间:".$start."--".$end);
}
$objActSheet->setCellValue('A2', "ID");
$objActSheet->setCellValue('B2', "反馈类型");
$objActSheet->setCellValue('C2', "反馈内容");
$objActSheet->setCellValue('D2', "反馈用户");
$objActSheet->setCellValue('E2', "反馈时间");
$objActSheet->setCellValue('F2', "产品版本");
    //这里结束
foreach ($list as $row) {
foreach ($indexKey as $key => $value){
//这里是设置单元格的内容
$objActSheet->setCellValue($header_arr[$key].$startRow,$row[$value]);
}
$startRow++;
} // 下载这个表格,在浏览器输出
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");;
header('Content-Disposition:attachment;filename='.$filename.'');
header("Content-Transfer-Encoding:binary");
$objWriter->save('php://output');
}
四.我的execl表格导出如图所示

五.想要详细了解下PHPexcel可以看下这篇博客

http://www.thinkphp.cn/topic/53674.html

												

PHPExcel的简单使用的更多相关文章

  1. 【php】对PHPExcel一些简单的理解

    这里有关于excel文件的几个概念需要跟大家说明一下,这几个概念对于我们的后续编程是很有帮助的:1.工作簿:在excel环境中用来存储数据并处理数据的文件,又称为excel文件或excel文档,   ...

  2. 登陆页、注册页、会员中心页logo图的替换

                  关闭   PHP在线开发笔记       目录视图 摘要视图 订阅 异步赠书:9月重磅新书升级,本本经典           程序员9月书讯      每周荐书:ES6.虚 ...

  3. phpexcel简单用法

    <?php /*php生成excel完整实例代码现求:php生成excel完整实例代码最好能说明如何调用!谢谢java_sunhui4 | 浏览 8131 次 2014-09-24 14:502 ...

  4. tp3.2 phpexcel 简单导出多个sheet(execl表格)

    参考链接:https://blog.csdn.net/u011341352/article/details/70211962 以下是公共类PHPExcel.php文件: // 开始 <?php/ ...

  5. thinkphp3.2和phpexcel导入

    先整个最基础的代码,理解了这个,后面的就非常简单了 $file_name= './Upload/excel/123456.xls'; import("Org.Util.PHPExcel&qu ...

  6. PHPExcel yii2 加载使用

    除了用composer 包管理组件的方式外 我们还可以使用 直接最原始的加载方式---超级简单 1.PHPExcel上下载最新的PHPExcel http://phpexcel.codeplex.co ...

  7. PHPExcel中文开发手册翻译版(2)

    2016年8月18日12:45:14 请注意这个是粗翻译版,仅供参考,不是精校版 精校版后面才会更新 PHPExcel开发者文档 1.目录 2. 4先决条件 2.1.软件要求4 2.2.安装说明4 2 ...

  8. PHPExcel中文开发手册翻译版(1)

    请注意这个是粗翻译版,仅供参考,不是精校版 精校版后面才会更新 英文原版在线文档 https://github.com/PHPOffice/PHPExcel/wiki/User%20Documenta ...

  9. phpexcel引入MVC框架会导致__autoload引入类文件失败的解决办法

    Autoloader.php 的register和load方法 register方法 if (function_exists('__autoload')) { // Register any exis ...

随机推荐

  1. java字符串MD5加密后再转16进制

    话不多说上码 pom.xml <!-- MD5 --> <dependency> <groupId>org.apache.commons</groupId&g ...

  2. [dart学习]第五篇:操作符

    前言:本系列内容假设读者有一定的编程基础,如了解C语言.python等. 本节一起来学习dart的操作符,直接拷贝官网的操作符描述表如下: Description Operator unary pos ...

  3. SpringBoot学习之一 Unable to find a single main class from the following candidates

    在启动SpringBoot项目是报错 Unable to find a single main class from the following candidates [boot.myboot.Sam ...

  4. java泛型中特殊符号的含义

    java泛型中的标记符含义:  E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number ...

  5. Python 调试工具PySnooper

    相信很多小伙伴平时写python的时候都是需要调试程序的,出问题了,需要了解函数内部是怎么跑的,而这个时候很多人都会想到在疑惑的地方使用print函数来打印一下参数来调试.虽然用print也是不失为是 ...

  6. MapReduce程序的开发过程

    1. 在linux(虚拟机环境)下安装hadoop2.8.3 1.1 安装JDK环境 1.2 安装hadoop 1.3 进行配置:core-site.xml,hdfs-site.xml设置 1.4 初 ...

  7. 编写expect程序报extra characters after close-brace错误或extra characters after close-quote,解决

    expect程序报extra characters after close-brace或extra characters after close-quote 可能原因 流程控制语句中的"{& ...

  8. 分布式消息通信之RabbitMQ Tutorials

    目录 官网 1 Hello World! 1.1 生产者demo producer 1.2 消费者demo consumer 1.3 查看queue队列中的信息 页面查看,可看到有4条消息 命令查看 ...

  9. ubuntu 右上角网络图标不见了

    sudo service network-manager stop sudo rm /var/lib/NetworkManager/NetworkManager.state sudo service ...

  10. Java学习笔记-设计模式

    常见设计模式有23种,设计模式是解决某一类问题最行之有效的方法 单例设计模式 解决一个类在内存中只存在一个对象 思想 为了避免其他程序过多建立该类对象.先禁止其他程序建立该类对象 还为了让其他程序可以 ...