一:概括 1:通过导出的插件 PHPEXCEL导出 2:通过原始的方式,浏览器导出
二:实现方式 1:PHPEXCEL的方式。例如:
public function pushlist(){ $_REQUEST['rows']=i('rows',8000); $_REQUEST['page']=i('page',1); $_REQUEST['sidx']=s('sidx','user_id'); $_REQUEST['sord']=s('sord','asc'); $_REQUEST['user_account']=s('user_account'); $_REQUEST['user_nickname']=s('user_nickname');
// echo"<pre>"; print_r( $_REQUEST);die; $data = $this->getUrl('User_Info', 'lists', 'account'); // print_r($data['data']['items'][0]);die; $tit= array( "序号", "用户ID", "用户账号", "用户昵称", "手机号", "注册时间" ); $key = array( "user_id", "user_account", "user_nickname", "user_mobile", "user_reg_time" ); $this->excel("商品导出", $tit, $data['data']['items'], $key); } public function excel($title, $tit, $con, $key) { ob_end_clean(); //***这里再加一个 $objPHPExcel = new PHPExcel(); $objPHPExcel->getProperties()->setCreator("mall_new"); $objPHPExcel->getProperties()->setLastModifiedBy("mall_new"); $objPHPExcel->getProperties()->setTitle($title); $objPHPExcel->getProperties()->setSubject($title); $objPHPExcel->getProperties()->setDescription($title); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->setTitle($title); $objPHPExcel->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //$objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(30); $letter = array( 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' ); foreach ($letter as $k => $v ) { $objPHPExcel->getActiveSheet()->getColumnDimension($v)->setWidth(30); //$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); } foreach ($tit as $k1 => $v1) { $objPHPExcel->getActiveSheet()->setCellValue($letter[$k1] . "1", $v1); } // foreach ($con as $k => $v) // { // foreach ($key as $k2 => $v2) // { // $objPHPExcel->getActiveSheet()->setCellValue($letter[$k2] . ($k + 2), $v[$v2]); // } // } foreach ($con as $k => $v) { $objPHPExcel->getActiveSheet()->setCellValue($letter[0] . ($k + 2), $k + 1); foreach ($key as $k2 => $v2) { $objPHPExcel->getActiveSheet()->setCellValue($letter[$k2 + 1] . ($k + 2), $v[$v2]); } } ob_end_clean(); //***这里再加一个 header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header("Content-Disposition: attachment; filename=\"$title.xls\""); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit; die(); } 2:通过浏览器的方式,例如
// 导出数据信息
public function exportExcel(array $header,array $data,$file_name=''){ !$file_name && $file_name = date("Y-m-d").".xls"; //组装头部标题 $head_txt = "<tr>"; foreach ($header as $v) { $head_txt .= "<td>$v</td>"; } $head_txt .= "</tr>"; $html = "<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"\r\nxmlns:x=\"urn:schemas-microsoft-com:office:excel\"\r\nxmlns=\"http://www.w3.org/TR/REC-html40\">\r\n<head>\r\n<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>"; $html .="<table border=1>" . $head_txt; $html .= ''; //组装实体数据部分 foreach ($data as $key => $rt) { $html .= "<tr>"; foreach ($rt as $v) { $html .= "<td >{$v}</td>"; } $html .= "</tr>\n"; } $html .= "</table></body></html>