原文安装链接:https://github.com/Maatwebsite/Laravel-Excel
代码如下:
1 if ($rows = DB::connection('glist')->table('program_view')->where('v_type', $type)->get()) 2 { 3 $head = array('Pid', 'Name', 'Play Times'); 4 $height = array(); 5 $movie_prog = array(); 6 $movie_height = array(); 7 $series_prog = array(); 8 $series_height = array(); 9 10 foreach ($rows as $row) 11 { 12 $pro_pid = $row->v_pid; 13 $pro_name = $row->v_prog; 14 $play_time = 0; 15 16 if ($counts = DB::connection('glist')->table('program_date_view')->where('prog_id', $pro_pid) 17 ->whereBetween('date', array($start_time, $end_time))->lists('view_count')) 18 { 19 foreach ($counts as $count) 20 { 21 $play_time += $count; 22 } 23 } 24 25 $play_times[] = strval($play_time); 26 $prog[] = array($pro_pid, $pro_name, strval($play_time)); 27 28 if (isset($this->mMonitorProgTypes[$pro_pid]) && 29 self::VOD_PROGRAM_TYPE == $this->mMonitorProgTypes[$pro_pid] && 30 isset($this->mMonitorProgCategories[$pro_pid]) && 31 "Series" != $this->mMonitorProgCategories[$pro_pid]) 32 { 33 $movie_play_times[] = strval($play_time); 34 $movie_prog[] = array($pro_pid, $pro_name, strval($play_time)); 35 } 36 else if (isset($this->mMonitorProgTypes[$pro_pid]) && 37 self::VOD_PROGRAM_TYPE == $this->mMonitorProgTypes[$pro_pid] && 38 isset($this->mMonitorProgCategories[$pro_pid]) && 39 "Series" == $this->mMonitorProgCategories[$pro_pid]) 40 { 41 $series_play_times[] = strval($play_time); 42 $series_prog[] = array($pro_pid, $pro_name, strval($play_time)); 43 } 44 } 45 46 if (!empty($prog)) 47 { 48 array_multisort($play_times, SORT_DESC, $prog); 49 array_unshift($prog, $head); 50 $height = array_fill(0, count($prog) + 1, 20); //20——excel cell height 51 } 52 53 if (!empty($movie_prog)) 54 { 55 array_multisort($movie_play_times, SORT_DESC, $movie_prog); 56 array_unshift($movie_prog, $head); 57 $movie_height = array_fill(0, count($movie_prog) + 1, 20); 58 } 59 60 if (!empty($series_prog)) 61 { 62 array_multisort($series_play_times, SORT_DESC, $series_prog); 63 array_unshift($series_prog, $head); 64 $series_height = array_fill(0, count($series_prog) + 1, 20); 65 } 66 } 67 68 Excel::create($type . ' Program Statistics Data', function($excel) use ($type, $prog, $height, $movie_prog, $movie_height, $series_prog, $series_height) { 69 70 $excel->sheet('program_ranking', function($sheet) use ($prog, $height) { 71 72 $sheet->fromArray($prog, null, 'A1', false, false); 73 $sheet->setWidth(array('A' => 25, 'B' => 35, 'C' => 15)); 74 $sheet->setHeight($height); 75 76 $sheet->cells('A1:C1', function ($cells) { 77 $cells->setFont(array( 78 'family' => 'Calibri', 79 'size' => '14', 80 'bold' => true 81 )); 82 }); 83 84 $sheet->cells('A1:C' . count($height), function ($cells) { 85 $cells->setAlignment('center'); 86 $cells->setValignment('middle'); 87 }); 88 }); 89 90 if ("VOD" == $type) 91 { 92 $excel->sheet('series_ranking', function($sheet) use ($series_prog, $series_height) { 93 94 $sheet->fromArray($series_prog, null, 'A1', false, false); 95 $sheet->setWidth(array('A' => 25, 'B' => 35, 'C' => 15)); 96 $sheet->setHeight($series_height); 97 98 $sheet->cells('A1:C1', function ($cells) { 99 $cells->setFont(array( 100 'family' => 'Calibri', 101 'size' => '14', 102 'bold' => true 103 )); 104 }); 105 106 $sheet->cells('A1:C' . count($series_height), function ($cells) { 107 $cells->setAlignment('center'); 108 $cells->setValignment('middle'); 109 }); 110 }); 111 112 $excel->sheet('other_ranking', function($sheet) use ($movie_prog, $movie_height) { 113 114 $sheet->fromArray($movie_prog, null, 'A1', false, false); 115 $sheet->setWidth(array('A' => 25, 'B' => 35, 'C' => 15)); 116 $sheet->setHeight($movie_height); 117 118 $sheet->cells('A1:C1', function ($cells) { 119 $cells->setFont(array( 120 'family' => 'Calibri', 121 'size' => '14', 122 'bold' => true 123 )); 124 }); 125 126 $sheet->cells('A1:C' . count($movie_height), function ($cells) { 127 $cells->setAlignment('center'); 128 $cells->setValignment('middle'); 129 }); 130 }); 131 } 132 })->export('xls'); 133 }