前端请求方法:GET
PHPExcel类库下载链接: https://pan.baidu.com/s/1PkN5-jGhWWWvT2Vf07JiPQ 提取码: f66s
导出EXCEL乱码问题 解决方法:ob_end_clean(); //清除缓冲区,避免乱码
代码实现:
public function export(){ //1.从数据库中取出数据 $list = Db('withdrawal')->alias('w') ->join('snake_member m','m.id=w.member_id') ->order('w.id asc')->field('w.*,m.username,m.phone')->select(); //2.加载PHPExcle类库 vendor('PHPExcel.PHPExcel'); ob_end_clean();//清除缓冲区,避免乱码 //3.实例化PHPExcel类 $objPHPExcel = new \PHPExcel(); //4.激活当前的sheet表 $objPHPExcel->setActiveSheetIndex(0); //5.设置表格头(即excel表格的第一行) $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'ID') ->setCellValue('B1', '会员ID') ->setCellValue('C1', '会员姓名') ->setCellValue('D1', '会员号码') ->setCellValue('E1', '提现金额(元)') ->setCellValue('F1', '提现时间') ->setCellValue('G1', '审核状态'); //设置A列水平居中 $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //设置单元格宽度 $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(10); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(10); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(10); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(12); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(10); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(20); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('G')->setWidth(10); // 6.循环刚取出来的数组,将数据逐一添加到excel表格。 for($i=0;$i<count($list);$i++){ $objPHPExcel->getActiveSheet()->setCellValue('A'.($i+2),$list[$i]['id']);//ID $objPHPExcel->getActiveSheet()->setCellValue('B'.($i+2),$list[$i]['member_id']);//会员ID $objPHPExcel->getActiveSheet()->setCellValue('C'.($i+2),$list[$i]['username']);//会员姓名 $objPHPExcel->getActiveSheet()->setCellValue('D'.($i+2),$list[$i]['phone']);//会员号码 $objPHPExcel->getActiveSheet()->setCellValue('E'.($i+2),$list[$i]['total']);//提现金额 $list[$i]['create_time'] = date('Y-m-d H:i:s',$list[$i]['create_time']); $objPHPExcel->getActiveSheet()->setCellValue('F'.($i+2),$list[$i]['create_time']);//提现时间 switch ($list[$i]['is_check']) { case 1: $list[$i]['is_check'] = '通过'; break; case 2: $list[$i]['is_check'] = '拒绝'; break; default: $list[$i]['is_check'] = '未审核'; break; } $objPHPExcel->getActiveSheet()->setCellValue('G'.($i+2),$list[$i]['is_check']);//审核状态 } //7.设置保存的Excel表格名称 $filename = '会员申请提现记录'.date('ymd',time()).'.xls'; //8.设置当前激活的sheet表格名称; $objPHPExcel->getActiveSheet()->setTitle('提现记录'); //9.设置浏览器窗口下载表格 header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header('Content-Disposition:inline;filename="'.$filename.'"'); //生成excel文件 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //下载文件在浏览器窗口 $objWriter->save('php://output'); exit; }