1. 程式人生 > >phpexcel匯出資料,用陣列遍歷匯出表頭

phpexcel匯出資料,用陣列遍歷匯出表頭

匯出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', '男');

這樣後期要新增列,只需要在陣列中間新增元素即可。