第一步:先到官网(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'); //禁止缓存 }