<?php
error_reporting(0);
require_once('excel/PHPExcel.php');
$head = ['姓名','身份證','性別','地址'];
$body = [
['周杰倫','510242197605300015','男','成都市高新區'],
['蔡依林','510242197605300014','女','成都市武侯區'],
];
excel_out($head,$body,'測試','test');
/**
* 導出excel
* @param $head array 表頭數據
* @param $body array 主體數據
* @param $name string 表格標籤名
* @param $filename string 導出的文件名
* @param $widths array 每列的寬度(可省略)
*
* Demo:
* $head = ['姓名','身份證','性別','地址'];
$body = [
['周杰倫','500242197605300015','男','成都市高新區'],
['蔡依林','500242197605300014','女','成都市武侯區'],
];
excel_out($head,$body,'測試','test');
*/
function excel_out($head,$body,$name,$filename,$widths=[],$superHead='')
{
$objPHPExcel = new PHPExcel();
$startRow = 1; //從第一行開始
//超級表頭(合併單元格,顯示一行字)
if($superHead){
$j = $i = 'A';
$count = count($head)-1;
for($index=0;$index<$count;$index++){
$j++;
}
$objPHPExcel->setActiveSheetIndex(0)->mergeCells($i.$startRow.':'.$j.$startRow); //合併
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($i.$startRow, $superHead);
$objPHPExcel->getActiveSheet()->getStyle($i.$startRow)->applyFromArray(
array(
'font' => array (
'bold' => true
),
'alignment' => array(
'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER
)
)
);
$objPHPExcel->getActiveSheet()->getStyle($i.$startRow.':'.$j.$startRow)->getFont()->setSize(20);
$startRow++;
}
//表頭
$i='A';
foreach($head as $item){
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($i.$startRow, $item);
$i++;
}
$count = count($head);
//主體數據
foreach($body as $key=>$value){
$startRow++;
$index='A';
for($i=0;$i<$count;$i++){
$objPHPExcel->getActiveSheet()->getStyle($index.$startRow)->getNumberFormat()->setFormatCode("@"); //文本格式
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($index.$startRow, $value[$i]);
$index++;
}
}
//設置寬度
if($widths){
$index='A';
for($i=0;$i<$count;$i++){
$objPHPExcel->getActiveSheet()->getColumnDimension($index)->setWidth($widths[$i]);
$index++;
}
}
$objPHPExcel->getActiveSheet()->setTitle($name);
$objPHPExcel->setActiveSheetIndex(0);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$filename.'.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
ob_end_clean();
$objWriter->save('php://output');
// exit;
}