天天看點

PHP 導出Excel表格

       在實際開發中,有很多場景是需要導出Excel表格的,比如背景的統計資料,客戶希望能導出為表格的形式,今天介紹一下TP5架構内實作Excel表格的導出功能,首先下載下傳phpexcel.zip,解壓後放到vendor第三方類庫目錄下,直接用函數vendor()引入就可以啦,直接貼代碼:

public function pushExcelAll(Request $request)
    {
        vendor(\'phpexcel.PHPExcel\'); //引入核心庫檔案 
	    vendor(\'phpexcel.PHPExcel.Writer.Excel2007\'); //引入excel2007操作類  
	    vendor(\'phpexcel.PHPExcel.IOFactory\'); 
	        
        $param = $request->param();
        $id = $param[\'id\']; //要導出的資料id
        $name = isset($param[\'name\']) ? $param[\'name\'] : \'ExampleMemb\'; //要導出的Excel表名
        
        $data = MeetMemb::query("select platform,ticketType,avatar,realName,phone,company,job,email,ticketRemark,seatCode,id from h_meetingmembs where id = $id"); //從資料庫中查到資料

        error_reporting(E_ALL);
        $objPHPExcel = new \PHPExcel();
        $letter = array(\'A\', \'B\', \'C\', \'D\', \'E\', \'F\', \'G\', \'H\', \'I\', \'J\', \'K\');
        //表頭數組
        $tableheader = array(\'購票平台\', \'票類\', \'頭像\', \'姓名\', \'手機号碼\', \'機關名稱\', \'職位\', \'郵箱\', \'備注\', \'坐席\', \'報名号\');
        
        //填充表頭資訊
        for ($i = 0; $i < count($tableheader); $i++) {
            $objPHPExcel->getActiveSheet()->setCellValue("$letter[$i]1", "$tableheader[$i]");
        }
        
        /*以下就是對處理Excel裡的資料,橫着取資料,主要是這一步,其他基本都不要改*/
        foreach ($data as $k => $v) {
            $num = $k + 1 + 1;
            $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue(\'A\' . $num, $v[\'platform\'])//platform
                ->setCellValue(\'B\' . $num, $v[\'ticketType\'])//ticketType
                ->setCellValue(\'C\' . $num, $v[\'avatar\'])//avatar
                ->setCellValue(\'D\' . $num, $v[\'realName\'])//realName
                ->setCellValue(\'E\' . $num, $v[\'phone\'])//phone
                ->setCellValue(\'F\' . $num, $v[\'company\'])//company
                ->setCellValue(\'G\' . $num, $v[\'job\'])//job
                ->setCellValue(\'H\' . $num, $v[\'email\'])//email
                ->setCellValue(\'I\' . $num, $v[\'ticketRemark\'])//ticketRemark
                ->setCellValue(\'J\' . $num, $v[\'seatCode\'])//seatCode
                ->setCellValue(\'K\' . $num, $v[\'id\']);//id
        }
        
        $objPHPExcel->getActiveSheet()->setTitle(\'signMemb\');
        $objPHPExcel->setActiveSheetIndex(0);
        header(\'Content-Type: application/vnd.ms-excel;charset=UTF-8"\');
        header(\'Content-Disposition: attachment;filename="\' . $name . \'.xls"\');
        header(\'Cache-Control: max-age=0\');
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, \'Excel5\');
        $objWriter->save(\'php://output\');
        exit;
    }      

相對應的修改幾個值,$id,$name,$data,$letter,$tableheader和foreach循環中的$v的屬性名,不出意外的話到此你就已經搞定了導出功能。