/* * 获取下一个列名 * 注意,此方法最多支持到两位 * */ function getNextColum($colum){ if(empty($colum))return 'A'; $key = ord(substr($colum,strlen($colum)-1,1)); if($key<90){ $str = strlen($colum)>1?substr($colum,0,1).chr($key+1):chr($key+1); }else{ $str = strlen($colum)>1?chr(ord(substr($colum,0,1))+1).'A':'AA'; } return $str; } function exportExcel(){ $keyValue = array( 'field_01' => '第一列标题', 'field_02' => '第二列标题', 'field_03' => '第三列标题', 'field_04' => '第四列标题', ); $list = array( array('field_01' => 'value_01', 'field_02' => 'value_02', 'field_03' => 'value_03', 'field_04' => 'value_04'), array('field_01' => 'value_01', 'field_02' => 'value_02', 'field_03' => 'value_03', 'field_04' => 'value_04'), array('field_01' => 'value_01', 'field_02' => 'value_02', 'field_03' => 'value_03', 'field_04' => 'value_04'), array('field_01' => 'value_01', 'field_02' => 'value_02', 'field_03' => 'value_03', 'field_04' => 'value_04') ); $this->import('PHPExcel'); $PHPExcel = new PHPExcel(); $fileName = iconv("utf-8", "GBK", 'excel文件名_导出时间(' . date('YmdHi', time()) . ').xlsx'); $colum = "A";//设置表头 foreach ($keyValue as $keys => $value) { $PHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $value); $PHPExcel->getActiveSheet()->getColumnDimension($colum)->setWidth(30); $colum = getNextColum($colum); } $row = 2; foreach ($list as $value) { $colum = "A";//设置表头 foreach ($keyValue as $v => $fieldContent) { $PHPExcel->setActiveSheetIndex(0)->setCellValueExplicit($colum . $row, empty($value[$v]) ? '--' : $value[$v], PHPExcel_Cell_DataType::TYPE_STRING); $PHPExcel->getActiveSheet()->getColumnDimension($colum)->setWidth(30); $colum = getNextColum($colum); } $row++; } header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header("Content-Disposition: attachment; filename="$fileName""); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel2007'); $objWriter->save('php://output'); }