• ThinkPHP5使用PHPExcel实现数据导出功能


    1、将PHPExcel类库文件夹放入extend目录下

    2、导出功能实现

     1 public function download(){
     2     if(request()->isPost()){            
     3         $val = input('dval','');
     4         if(!empty($val)){
     5             $where['phone'] = $val;
     6         }            
     7         $list = db("withdraw")->where($where)->order('id desc')->select();
     8         if(empty($list)){
     9             $this->error('暂无数据打印');
    10         }
    11         $data = array();
    12         foreach ($list as $k=>$value){
    13             $data[$k]['phone'] = $value['phone'];
    14             $data[$k]['sl'] = $value['sl'];
    15             $data[$k]['status'] = $value['status'];
    16             $data[$k]['createtime'] = date('Y-m-d H:i:s',$value['createtime']);
    17         }           
    18         foreach ($data as $field=>$v){
    19             if($field == 'phone'){
    20                 $headArr[]='手机号';
    21             }
    22             if($field == 'sl'){
    23                 $headArr[]='数量';
    24             }
    25             if($field == 'status'){
    26                 $headArr[]='状态';
    27             }
    28             if($field == 'createtime'){
    29                 $headArr[]='时间';
    30             }
    31         }
    32         $filename="记录";
    33         return $this->getExcel($filename,$headArr,$data);
    34     }
    35 }
    36 public  function getExcel($fileName,$headArr,$data){
    37     //导入PHPExcel类库
    38     require_once(Env::get('root_path') . 'extend/PHPExcel/Classes/PHPExcel.php');
    39     require_once(Env::get('root_path') . 'extend/PHPExcel/Classes/PHPExcel/IOFactory.php');
    40     
    41     $date = date("Y_m_d",time());
    42     $fileName .= "_{$date}.xls";
    43 
    44     //创建PHPExcel对象,注意,不能少了
    45     $objPHPExcel = new PHPExcel();
    46     $objProps = $objPHPExcel->getProperties();
    47 
    48     //设置表头
    49     $key = ord("A");
    50     foreach($headArr as $v){
    51         $colum = chr($key);
    52         $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.'1', $v);
    53         $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.'1', $v);
    54         $key += 1;
    55     }
    56 
    57     $column = 2;
    58     $objActSheet = $objPHPExcel->getActiveSheet();
    59     
    60     foreach($data as $key => $rows){ //行写入
    61         $span = ord("A");
    62         foreach($rows as $keyName=>$value){// 列写入
    63             $j = chr($span);
    64             $objActSheet->setCellValue($j.$column, $value);
    65             $span++;
    66         }
    67         $column++;
    68     }
    69 
    70     $fileName = iconv("utf-8", "gb2312", $fileName);
    71 
    72     //重命名表
    73     //$objPHPExcel->getActiveSheet()->setTitle('test');
    74     //设置活动单指数到第一个表,所以Excel打开这是第一个表
    75     $objPHPExcel->setActiveSheetIndex(0);
    76     ob_end_clean();//清除缓冲区,避免乱码
    77     header('Content-Type: application/vnd.ms-excel');
    78     header("Content-Disposition: attachment;filename="$fileName"");
    79     header('Cache-Control: max-age=0');
    80 
    81     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    82     $objWriter->save('php://output'); //文件通过浏览器下载
    83     exit;
    84 }
  • 相关阅读:
    编译Android源码
    Android Studio 更新
    ANDROID:替换系统桌面
    Linux目录树与文件系统
    主引导记录MBR
    Android开发使用run-as获取应用数据
    桥接模式
    工厂方法模式
    Floyd's Cycle Detection Algorithm
    用两个stack实现一个队列
  • 原文地址:https://www.cnblogs.com/Jessie-candy/p/12817873.html
Copyright © 2020-2023  润新知