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 }

 

posted @ 2020-05-02 13:42  糖糖Y  阅读(426)  评论(0编辑  收藏  举报