第一步:先到官網(https://github.com/PHPOffice/PHPExcel)下載PHPExcelphp
第二步:放到第三方庫git
第三步:github
/** * 封裝:信息導出 * @param $day * @param string $tableName * @throws PHPExcel_Exception * @throws PHPExcel_Reader_Exception */ public function Db2Eexcel($data, $tableName = "用戶支付數據"){ vendor("PHPExcel.PHPExcel"); // 1. 實例化工做簿 $excel = new \PHPExcel(); // 2. 獲得前當活動工做表 $sheet = $excel->getActiveSheet(); // 3. Excel表格式,這裏簡略寫了14列 $letter = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q']; // 3.1 表頭數組 $tableheader = ['ID','訂單建立時間','訂單處理時間','支付平臺單號','商戶訂單號','支付類型','支付金額','實際支付金額','銀行卡','商品名稱','支付狀態','遊戲支付狀態','帳號','服務器ID','渠道','子渠道','遊戲ID']; // 3.2 填充表頭信息, 並設置樣式 for($i = 0;$i < count($tableheader);$i++) { $sheet->getCell("$letter[$i]1")->setValue("$tableheader[$i]"); $sheet->getStyle("$letter[$i]1")->getAlignment()->setHorizontal('center'); // 統一設置水平居中 $sheet->getStyle("$letter[$i]1")->getAlignment()->setVertical('center'); // 統一設置垂直居中 $sheet->getStyle("$letter[$i]1")->getFont()->getColor()->setRGB('b5211a'); // 統一設置單元格字段顏色 $sheet->getStyle("$letter[$i]1")->getFont()->setSize(10); // 統一設置字體大小 $sheet->getStyle("$letter[$i]")->getFont()->setSize(10); $sheet->getStyle("$letter[$i]1")->getFont()->setBold(true); // 統一設置加粗 $sheet->getColumnDimension("$letter[$i]")->setWidth(20); // 統一設置寬度 } // 3.3 樣式:第1行的高度 $sheet->getRowDimension('1')->setRowHeight(30); // 3.4 樣式:列的寬度 $sheet->getColumnDimension('A')->setWidth(10); $sheet->getColumnDimension('B')->setWidth(20); $sheet->getColumnDimension('C')->setWidth(20); $sheet->getColumnDimension('D')->setWidth(30); $sheet->getColumnDimension('E')->setWidth(30); $sheet->getColumnDimension('F')->setWidth(10); $sheet->getColumnDimension('G')->setWidth(10); $sheet->getColumnDimension('H')->setWidth(15); $sheet->getColumnDimension('I')->setWidth(10); $sheet->getColumnDimension('J')->setWidth(10); $sheet->getColumnDimension('K')->setWidth(10); $sheet->getColumnDimension('L')->setWidth(15); $sheet->getColumnDimension('M')->setWidth(10); $sheet->getColumnDimension('N')->setWidth(10); $sheet->getColumnDimension('O')->setWidth(10); $sheet->getColumnDimension('P')->setWidth(10); $sheet->getColumnDimension('Q')->setWidth(20); // 4. 填充表格信息 for ($i = 2, $k = 0; $i <= count($data)+1; $i++, $k++) { $j = 0; // 格式化:時間 if(!empty($data[$k]['ftime'])){ $data[$k]['ftime'] = date('Y/m/d H:i:s', $data[$k]['ftime']); } if(!empty($data[$k]['ptime'])){ $data[$k]['ptime'] = date('Y/m/d H:i:s', $data[$k]['ptime']); } // 格式化:支付類型 1:支付寶 2:微信 if(!empty($data[$k]['paytype'])){ if($data[$k]['paytype'] == 1){ $data[$k]['paytype'] = "支付寶"; } if($data[$k]['paytype'] == 2){ $data[$k]['paytype'] = "微信"; } } //格式化:支付狀態1成功0失敗 if(isset($data[$k]['paystatus'])) { $data[$k]['paystatus'] = $data[$k]['paystatus'] == 1 ? "成功" : "失敗"; } if(isset($data[$k]['gamepaystatus'])) { $data[$k]['gamepaystatus'] = $data[$k]['gamepaystatus'] == 1 ? "成功" : "失敗"; } foreach ($data[$i - 2] as $key=>$value) { $sheet->getCell("$letter[$j]$i")->setValue("$value"); $sheet->getStyle("$letter[$j]$i")->getAlignment()->setHorizontal('center'); $j++; } } // 6. 保存文件:輸出到瀏覽器 $writer = \PHPExcel_IOFactory::createWriter($excel,'Excel2007'); self::browser_export('Excel2007', $tableName.'.xlsx'); //輸出到瀏覽器 $writer->save("php://output"); } /** * 輸出到瀏覽器 * @param $type * @param $filename */ function browser_export($type,$filename){ if($type=="Excel5"){ header('Content-Type: application/vnd.ms-excel');//告訴瀏覽器將要輸出excel03文件 }else{ header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;');//告訴瀏覽器數據excel07文件 } ob_end_clean();//清除緩存區,避免亂碼 header('Content-Disposition: attachment;filename="'.$filename.'"'); //告訴瀏覽器將輸出文件的名稱 header('Cache-Control: max-age=0'); //禁止緩存 }