phpexcel匯出資料,用陣列遍歷匯出表頭
阿新 • • 發佈:2019-01-03
匯出excel,比較常用的是,一列一列的列印到表格上,像這種:
$objPHPExcelActiveSheet->setCellValue('A1', '姓名'); $objPHPExcelActiveSheet->setCellValue('B1', '性別'); $objPHPExcelActiveSheet->setCellValue('C1', '年齡'); $objPHPExcelActiveSheet->setCellValue('D1', '成績'); $objPHPExcelActiveSheet->setCellValue('E1', '學號');
這種比較簡單,但是可維護性比較差,假如後期要在中間插一列,改動就比較大,比較麻煩。所以,最好是用陣列來迴圈表頭,像這樣:
$config = array( array(10, '姓名'), array(10, '性別'), array(15, '年齡'), array(20, '成績'), array(20, '學號') ); $objPHPExcel= new PHPExcel ();
//引數依次為excel物件、表頭陣列、表頭起始行、預設行高 $lastColumn= setPHPExcelHeader($objPHPExcel, $config, 5, 15);
function setPHPExcelHeader(&$excelClass, $config, $startRow, $defaultRowHeight = 20) { if (gettype($excelClass) == 'object') { if (is_array($config) && sizeof($config)) { foreach ($config as $k => $v) { $letter = ''; $letter = getLetterColumn($k); if($letter) { $excelClass->getActiveSheet()->getColumnDimension($letter) ->setWidth($v[0]); $excelClass->getActiveSheet()->setCellValue($letter . $startRow, $v[1]); } } } $excelClass->getActiveSheet()->getDefaultRowDimension() ->setRowHeight($defaultRowHeight); } return $letter; }
//表格資料部分 $column= 0;
//用getLetterCllumn($column)來表示列,新增列只需$column++即可 //如下,就表示,向A2寫入‘張三’,向B2寫入‘男’ $objPHPExcel->getActiveSheet()->setCellValue(getLetterColumn($column++) . '2', '張三'); $objPHPExcel->getActiveSheet()->setCellValue(getLetterColumn($column++) . '2', '男');
這樣後期要新增列,只需要在陣列中間新增元素即可。