使用這個類前,需安裝PHPExcel庫,安裝教程可參考:https://www.cnblogs.com/JahanGu/p/8039021.html
導出excel類:
<?php /* * 導出表格 */ namespace common\utils; class OutputExecl { /* * 導出execl * headerData 表頭信息 形如 array('A1'=>'編號','B1'=>'會員ID','C1'=>'電話'); * data 導入數據 這個要與表頭順序一致 * 返回一個execl下載地址 */ public function output($headData,$data,$filename='') { $objPHPExcel = new \PHPExcel(); //設置表頭的信息 $headObj = $objPHPExcel->setActiveSheetIndex(0); foreach($headData as $key=>$val) { $headObj->setCellValue($key,$val); } $i=2; //寫入數據 $contentObj = $objPHPExcel->getActiveSheet(); $listks = 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'); foreach ($data as $key => $value) { $l = 0; foreach($value as $val) { //給表的單元格設置數據 $contentObj->setCellValue($listks[$l].$i,$val); $l++; } $i++; } //設置sheet頁標題 $objPHPExcel->getActiveSheet()->setTitle('表格導出數據'); $objPHPExcel->setActiveSheetIndex(0); if(!$filename) $filename = time().rand(1000,9999).'.xls'; $dir = '/data/execl/'; $basePath = $_SERVER['DOCUMENT_ROOT']; if(!is_dir($basePath.$dir)) mkdir($basePath.$dir,0777,true); $dirFile = $dir.$filename; //1,直接生成一個文件 $objWriter =\PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save( $basePath.$dirFile); $host = \Yii::$app->request->hostInfo; return $host.$dirFile; } }
調用:
//組織導出數據 $exportData = array(); foreach($list as $val) { $temp = []; $temp[] = $val['member_id']; $temp[] = $val['member_name']; $temp[] = $val['member_mobile']; $temp[] = $val['state']?'正常':'凍結'; $temp[] = date("Y-m-d H:i:s",$val['create_time']); $exportData[] = $temp; } $headData = array('A1'=>'會員ID','B1'=>'會員姓名','C1'=>'會員電話','D1'=>'會員狀態','E1'=>'注冊時間'); $fileName = 'member-'.date('Y-m-d').'.xls'; $execlObj = new OutputExecl(); $res = $execlObj->output($headData,$exportData,$fileName); if($res) $this->out('下載地址',array('url'=>$res)); else $this->error('導出失敗');