网站后台有很多列表数据,常常都会有导出excel表格的需求,和大家分享一个实用的导出excel表格方法;
不多说,上代码;
1 /** 2 * @param array $data 要导出的数据 3 * @param array $title excel表格的表头 4 * @param string $filename 文件名 5 */ 6 public function daochu_excel($data=array(),$title=array(),$filename='报表'){//导出excel表格 7 //处理中文文件名 8 ob_end_clean(); 9 Header('content-Type:application/vnd.ms-excel;charset=utf-8'); 10 11 header("Content-Disposition:attachment;filename=export_data.xls"); 12 //处理中文文件名 13 $ua = $_SERVER["HTTP_USER_AGENT"]; 14 15 $encoded_filename = urlencode($filename); 16 $encoded_filename = str_replace("+", "%20", $encoded_filename); 17 if (preg_match("/MSIE/", $ua) || preg_match("/LCTE/", $ua) || $ua == 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko') { 18 header('Content-Disposition: attachment; filename="' . $encoded_filename . '.xls"'); 19 }else { 20 header('Content-Disposition: attachment; filename="' . $filename . '.xls"'); 21 } 22 header ( "Content-type:application/vnd.ms-excel" ); 23 24 25 $html = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> 26 <html xmlns='http://www.w3.org/1999/xhtml'> 27 <meta http-equiv='Content-type' content='text/html;charset=UTF-8' /> 28 <head> 29 30 <title>".$filename."</title> 31 <style> 32 td{ 33 text-align:center; 34 font-size:12px; 35 font-family:Arial, Helvetica, sans-serif; 36 border:#1C7A80 1px solid; 37 color:#152122; 38 auto; 39 } 40 table,tr{ 41 border-style:none; 42 } 43 .title{ 44 background:#7DDCF0; 45 color:#FFFFFF; 46 font-weight:bold; 47 } 48 </style> 49 </head> 50 <body> 51 <table width='100%' border='1'> 52 <tr>"; 53 foreach($title as $k=>$v){ 54 $html .= " <td class='title' style='text-align:center;'>".$v."</td>"; 55 } 56 57 $html .= "</tr>"; 58 59 foreach ($data as $key => $value) { 60 $html .= "<tr>"; 61 foreach($value as $aa){ 62 $html .= "<td>".$aa."</td>"; 63 } 64 65 $html .= "</tr>"; 66 67 } 68 $html .= "</table></body></html>"; 69 echo $html; 70 exit; 71 }
$title参数的数据是一个一维数组,如下:
![](https://img2018.cnblogs.com/blog/1405671/201809/1405671-20180927144956692-1915647187.png)
$data参数是一个二维数组,如下:
![](https://img2018.cnblogs.com/blog/1405671/201809/1405671-20180927144856465-401743902.png)
调用方法:
1 $daochuData = DB::table('scholarship_to_weixin as s')->leftJoin('users as u','s.uid','=','u.id') 2 ->leftJoin('admin as a','a.id','=','s.tx_checkid') 3 ->orderBy('s.times','desc') 4 ->select('s.*','u.nickname','u.tel','u.id as u_id','a.name as a_name','u.admin_beizhu_name') 5 ->get(); 6 7 $title = array('序号','申请时间','申请人','备注名称','申请人手机号','提现金额','操作时间','操作人'); 8 9 $arr = []; 10 foreach($daochuData as $k=>$v){ 11 $arr[] = array( 12 $k+1, 13 $v->times, 14 $v->nickname, 15 $v->admin_beizhu_name, 16 $v->tel, 17 $v->money, 18 $v->s_times, 19 $v->a_name 20 ); 21 } 22 23 $this->daochu_excel($arr,$title,'红包提现到微信记录');
结果:
希望对您有帮助。谢谢!