前臺頁面的html代碼
<button id="exportExcel">
<i>導出Excel表格</i>
</button>
前臺頁面的js代碼
//導出$('#exportExcel').on('click', function () { var re = confirm("確定要導出全部數據嗎?"); if (re == true) { window.location.href = "{:U('Admin/Super/exportOrderListExcel')}"; //跳到方法 } else { //alert('您取消了'); //取消了 } });
後臺的控制器
/** 導出訂單列表的excel * author tc */ public function exportOrderListExcel(){ //先查詢數據(全部) $orderList = new OrderListService(); $memberList = new MemberService(); $map = ''; $data = $orderList->orderIds($map,'*','created desc'); foreach ($data as $k => $v) { $arrMid[] = $v['mid']; } $arrMid = array_unique($arrMid); //查詢會員名,城市,手機號 $whereUser['id'] = array('in',$arrMid); $userResult = $memberList->getUserList($whereUser,'id,cellphone,nickname,city'); foreach ($userResult as $key => $value) { $userResult[$value['id']] = $value; } foreach ($data as $key => $value) { $data[$key]['nickname'] = $userResult[$value['mid']]['nickname']; $data[$key]['city'] = $userResult[$value['mid']]['city']; $data[$key]['cellphone'] = $userResult[$value['mid']]['cellphone']; } $area = C('ZHONGKAO_AREA'); $pay_status = array(0=>'未支付',2=>'支付成功'); $payment = array(1=>'後臺人工支付',2=>'微信支付',3=>'支付寶支付'); $status = array(0=>'未完成',2=>'已完成'); //開始導出 $list[0] = array('order_id'=>'訂單號','nickname'=>'會員名','cellphone'=> '手機號','city'=> '城市','total'=>'總價','pay_status'=>'支付狀態','payment'=>'支付方式','status'=>'狀態'); $i = 1; foreach ($data as $k=>$v){ $list[$i]['order_id'] = "'".$v['order_id']; //訂單號 $list[$i]['nickname'] = $v['nickname']; //會員名 $list[$i]['cellphone'] = "'".$v['cellphone']; //手機號 $list[$i]['city'] = $area[$v['city']]; //城市 $list[$i]['total'] = $v['total']; //總價 $list[$i]['pay_status'] = $pay_status[$v['pay_status']]; //支付狀態 $list[$i]['payment'] = $payment[$v['payment']]; //支付方式 $list[$i]['status'] = $status[$v['status']]; //狀態 $i++; } exportExcel($list); }
common/function 裡面的一個公共方法
/** excel導出 */ function exportExcel($data,$name='訂單列表') { import('Com.PHPExcel.PHPExcel'); $objPHPExcel = new \PHPExcel(); $objPHPExcel->getProperties()->setCreator("甜甜") ->setLastModifiedBy("甜甜") ->setTitle("數據EXCEL導出") ->setSubject("數據EXCEL導出") ->setDescription("備份數據") ->setKeywords("excel") ->setCategory("result file"); /*以下就是對處理Excel裡的數據, 橫著取數據,主要是這一步,其他基本都不要改*/ foreach($data as $k => $v){ $num=$k+1; $objPHPExcel->setActiveSheetIndex(0) //Excel的第A列,uid是你查出數組的鍵值,下面以此類推 ->setCellValue('A'.$num, $v['order_id']) ->setCellValue('B'.$num, $v['nickname']) ->setCellValue('C'.$num, $v['cellphone']) ->setCellValue('D'.$num, $v['city']) ->setCellValue('E'.$num, $v['total']) ->setCellValue('F'.$num, $v['pay_status']) ->setCellValue('G'.$num, $v['payment']) ->setCellValue('H'.$num, $v['status']); } $objPHPExcel->getActiveSheet()->setTitle('User'); $objPHPExcel->setActiveSheetIndex(0); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="'.$name.'.xls"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit; }
還有一個文件夾和一個文件放在
(一般我們放在vendor裡面,因為是公司項目所以就放在com裡面)