PHP如何實(shí)現(xiàn)表格Excel的導(dǎo)出
首先下載PHPExcel包并將包引入到項(xiàng)目中;然后實(shí)例化PHPExcel對象;接著設(shè)置表格的列,以及列隊(duì)屬性;再將數(shù)據(jù)添加到表格中;最后將表格文件數(shù)據(jù)輸出即可。
PHPExcel
是用來操作Office Excel 文檔的一個PHP類庫,它基于微軟的OpenXML標(biāo)準(zhǔn)和PHP語言??梢允褂盟鼇碜x取、寫入不同格式的電子表格
ThinkPHP示例
public function exportExcel() { //先獲取數(shù)據(jù) $where['comid'] = session('uid'); $res = M('cheliang')->where($where)->select(); // var_dump($res);die; //下面就是導(dǎo)出的步驟了 vendor('PHPExcel0.Classes.PHPExcel'); $objPHPExcel = new PHPExcel(); $objPHPExcel->createSheet(0); $objPHPExcel->setActiveSheetIndex(0); //只需要把你想要的字段改成你自己需要的就可以了?。。? $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', '考試人') ->setCellValue('B1', '車牌') ->setCellValue('C1', '考試時間') ->setCellValue('D1', '考試分?jǐn)?shù)') ->setCellValue('E1', '簽名'); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);//設(shè)置單元格寬度 $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(50);//設(shè)置單元格寬度 $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);//設(shè)置單元格寬度 $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20);//設(shè)置單元格寬度 $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true); //第一行是否加粗 $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true); //第一行是否加粗 $objPHPExcel->getActiveSheet()->getStyle('C1')->getFont()->setBold(true); //第一行是否加粗 $objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->setBold(true); //第一行是否加粗 $objPHPExcel->getActiveSheet()->getStyle('E1')->getFont()->setBold(true); //第一行是否加粗 //$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(16); //第一行字體大小 // 設(shè)置垂直居中 $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('E1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); // 設(shè)置行高度 $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(20); //設(shè)置默認(rèn)行高 $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30); //第一行行高 //循環(huán)添加數(shù)據(jù),注意的是下面的$kk+2,是因?yàn)?kk是下標(biāo),從0開始的,而第一行是你的標(biāo)題,所以要從第二行開始才是你的數(shù)據(jù) foreach ($data as $kk => $vv) { $no = $kk + 2; $currentSheet = $objPHPExcel->getActiveSheet(); $currentSheet->setCellValue('A' . $no, $vv['xueyuan']['name']); $currentSheet->setCellValue('B' . $no, $vv['xueyuan']['chepaihao']); $currentSheet->setCellValue('C' . $no, date('Y-m-d H:i:s',$vv['addtime']).'至'.date('Y-m-d H:i:s',$vv['sbttime'])); $currentSheet->setCellValue('D' . $no, $vv['score']); //設(shè)置單元格高度,這個是重點(diǎn)哦 $currentSheet->getRowDimension($no) -> setRowHeight(40); // 圖片生成 $objDrawing[$kk] = new PHPExcel_Worksheet_Drawing();//這個就是生成圖片的類(重點(diǎn)) $objDrawing[$kk]->setPath('./'.$vv['qmimg']);/圖片的路徑 // 設(shè)置寬度高度 $objDrawing[$kk]->setHeight(85);//照片高度 $objDrawing[$kk]->setWidth(100); //照片寬度 /*設(shè)置圖片要插入的單元格*/ $objDrawing[$kk]->setCoordinates('E'.$no); // 圖片偏移距離 $objDrawing[$kk]->setOffsetX(12); $objDrawing[$kk]->setOffsetY(12); $objDrawing[$kk]->setWorksheet($objPHPExcel->getActiveSheet()); } $objPHPExcel->setActiveSheetIndex(0); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="' . '文件名稱'. '.xls"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit; }
推薦教程:《PHP教程》