1. 表格方式
public function getVideoExcelExport(){ $dataResult = Video::select(\'id\',\'title\',\'price_way\', \'playnum\',\'content\',\'video_type\')->get()->toArray(); foreach ($dataResult as $k=>$v){ //0免费 1VIP 2付费 $dataResult[$k][\'price_way_text\'] = ($v[\'price_way\'] == 0)?\'免费\':(($v[\'price_way\'] == 1)?\'VIP\':\'付费\'); $dataResult[$k][\'video_type_text\'] = MappingUtil::getTextByVideoType($v[\'video_type\']); } $headTitle = "视频记录"; $title = "视频记录"; $headtitle= "<tr style=\'height:50px;border-style:none;>\<th border=\"0\" style=\'height:60px;width:270px;font-size:22px;\' colspan=\'11\' >{$headTitle}</th></tr>"; $titlename = "<tr> <th style=\'width:70px;\' >ID</th> <th style=\'width:300px;\' >标题</th> <th style=\'width:70px;\'>付费模式</th> <th style=\'width:70px;\'>视频类型</th> <th style=\'width:600px;\'>内容</th> </tr>"; $filename = $title.".xls"; $this->excelData($dataResult,$titlename,$headtitle,$filename); } /*视频导出Excel */ public function excelData($datas,$titlename,$title,$filename){ $columns = [\'id\',\'title\',\'price_way_text\',\'video_type_text\',\'content\']; $str = "<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"\r\nxmlns:x=\"urn:schemas-microsoft-com:office:excel\"\r\nxmlns=\"http://www.w3.org/TR/REC-html40\">\r\n<head>\r\n<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>"; $str .="<table border=1><head>".$titlename."</head>"; //$str .= $title; $dataResult = []; foreach ($datas as $key=>$value){ foreach ($columns as $k=>$v){ if (isset($datas[$key][$v])){ $dataResult[$key][$v] = $datas[$key][$v]; } } } foreach ($dataResult as $key=> $rt ){ $str .= "<tr>"; foreach ( $rt as $k => $v ) { $str .= "<td>{$v}</td>"; } $str .= "</tr>\n"; } $str .= "</table></body></html>"; header( "Content-Type: application/vnd.ms-excel; name=\'excel\'" ); header( "Content-type: application/octet-stream" ); header( "Content-Disposition: attachment; filename=".$filename ); header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" ); header( "Pragma: no-cache" ); header( "Expires: 0" ); exit( $str ); }
2. 不分sheet方式
use Excel; public function getMatchFinalTempWorkExcelExportModule(Request $request){ $groupId = $request->get(\'match_group_id\',\'\'); if(empty($groupId) || !is_numeric($groupId)){ echo \'请传入正确match_group_id\'; exit; } switch ($groupId){ case 1:{ $groupName = \'中年组\'; } case 2:{ $groupName = \'老年组\'; } case 3:{ $groupName = \'合唱组\'; } default :{ $groupName = \'未分组\'; } } $where = [ [\'final_score\',\'>\',0], [\'match_group_id\',\'=\',$groupId], ]; $orderBy = [ [\'final_score\',\'desc\'] ]; $dataResultDB = MatchFinalTempWork::getFinalTempWorkForAdmin([ \'where\'=>$where, \'order_by\'=>$orderBy ]); $dataResult = []; if(!empty($dataResultDB[\'final_works\'])){ $dataResult = $dataResultDB[\'final_works\']; } foreach ($dataResult as $k=>$v){ $text = \'未分组\'; if($v[\'match_group_id\'] == 1){ $text = \'中年组\'; } if($v[\'match_group_id\'] == 2){ $text = \'老年组\'; } if($v[\'match_group_id\'] == 3){ $text = \'合唱组\'; } $v[\'group_name\'] = $text; $dataResult[$k] = $v; } $columnsHead = [ \'作品名称 \' ,\'编号 \' ,\'联系人 \' ,\'得分 \' ]; $columns = [ \'work_name\' , \'serial_no\' , \'contacter\' ,\'final_score\' ]; $cellData = []; $cellData[] = $columnsHead; foreach ($dataResult as $k=>$v){ $temp = []; foreach ($columns as $kc=>$vc){ if (isset($v[$vc]) || is_null($v[$vc])){ $temp[$vc] = $v[$vc]; } } $cellData[] = $temp; } $filename = $groupName."比赛结果"; Excel::create($filename,function($excel) use ($groupName, $cellData){ $excel->sheet($groupName, function($sheet) use ($cellData){ $sheet->rows($cellData); }); })->export(\'xls\'); }
3.分sheet方式
use Excel; //比赛作品导出 public function getMatchWorkExcelExportModule(){ $where = [ [\'work_status\',4], [\'original_id\',\'>\',0], ]; $orderBy = [ [\'group_id\',\'asc\'], [\'matcher_area_id\',\'asc\'] ]; $dataResult = MatchWork::select(\'tb_match_work.work_name\', \'tb_match_work.matcher_name\',\'tb_match_work.matcher_age\', \'tb_match_work.support_num\', \'tb_match_work.work_desc\', \'tb_match_work.contacter\', \'tb_match_work.mobile\', \'tb_match_work.group_id\',\'tb_match_work.work_url\',\'tb_match_work.match_group_id\' ,\'city.name as city_name\' ,\'tb_match_final_work.title\',\'tb_match_final_work.type\' ,\'tb_match_resource.title as resource_title\' ) ->leftjoin(\'city\',\'tb_match_work.matcher_area_id\',\'=\',\'city.id\') ->leftjoin(\'tb_match_final_work\',\'tb_match_final_work.work_id\',\'=\',\'tb_match_work.id\') ->leftjoin(\'tb_match_resource\',\'tb_match_resource.id\',\'=\',\'tb_match_final_work.resource_id\') ->baseWhere($where) ->baseOrderBy($orderBy) ->get() ->toArray(); $areas = array_column($dataResult ,\'match_group_id\'); sort($areas); $areas = array_unique($areas); foreach ($dataResult as $k=>$v){ $text = \'未分组\'; if($v[\'group_id\'] == 1){ $text = \'中年组\'; } if($v[\'group_id\'] == 2){ $text = \'老年组\'; } if($v[\'group_id\'] == 3){ $text = \'合唱组\'; } $v[\'group_name\'] = $text; unset($v[\'group_id\']); if(!empty($v[\'work_url\'])){ $v[\'work_url\'] = UrlUtil::addCdnPrefix($v[\'work_url\']); } if($v[\'type\'] == 2){ $v[\'title\'] = $v[\'resource_title\']; } unset($v[\'resource_title\']); unset($v[\'type\']); $dataResult[$k] = $v; } $dataData = []; $columnsHead = [\'作品名称\',\'合唱团队名称\',\'支持数\' ,\'作品描述\' ,\'联系人\',\'联系电话\',\'年龄\',\'地区\' ,\'作品地址\' ,\'分组\',\'复赛作品\']; $columns = [\'work_name\', \'matcher_name\', \'support_num\' , \'work_desc\' , \'contacter\', \'mobile\',\'matcher_age\',\'city_name\' , \'work_url\' ,\'group_name\',\'title\']; foreach ($areas as $key=>$value){ $cellData = []; $cellData[] = $columnsHead; foreach ($dataResult as $k=>$v){ if($value == $v[\'match_group_id\']){ $temp = []; foreach ($columns as $kc=>$vc){ if (isset($v[$vc]) || is_null($v[$vc])){ $temp[$vc] = $v[$vc]; } } $cellData[] = $temp; } } $dataData[$key][\'group\'] = $value; $dataData[$key][\'cell_data\'] = $cellData; } $filename = "比赛记录"; Excel::create($filename,function($excel) use ($dataData){ foreach ($dataData as $key=>$value){ $cellData = $value[\'cell_data\']; $groupName = \'分组\'.$value[\'group\']; $excel->sheet($groupName, function($sheet) use ($cellData){ $sheet->rows($cellData); }); } })->export(\'xls\'); }