PHP使用PHPExcel導出Excel超簡單示例

<?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;
}

 

源碼DEMO下載:http://file.dedemao.com/code/excel.zip

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章