使用这个类前,需安装PHPExcel库,安装教程可参考:https://www.cnblogs.com/JahanGu/p/8039021.html
导出excel类:
<?php /* * 导出表格 */ namespace commonutils; 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('导出失败');