zoukankan      html  css  js  c++  java
  • PHPExcel的简单使用

    一.在做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']=" ".$v['union_id']." ";//导出为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

    
    
  • 相关阅读:
    刻舟求剑,
    录制时间是不准确的,
    HIV T2
    DNA RNA
    洛谷 P1428 小鱼比可爱
    Codevs 1081 线段树练习2
    Codevs 1080 线段树联系
    Tarjan算法
    Codevs 2611 观光旅游
    洛谷 1865 A%B问题
  • 原文地址:https://www.cnblogs.com/dyj--php/p/9299067.html
Copyright © 2011-2022 走看看