導出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', '男');
這樣後期要新增列,隻需要在數組中間添加元素即可。