php導出數據爲excel表格

在第一個php文件中寫一個函數(如:toExcel),吧mysql數據查詢出來,爲函數exportexcel準備數據,然後調用該函數;

在視圖模板中通過url方式,訪問第一個php文件中的toExcel函數,自動提示下載;

文件名可自定義,excel表頭根據數據列 來自定義;


第一個php文件(用的是onethink程序,語法結構是thinkphp框架):

public function toExcel(){
		 	require_once('excel.php');			
			$mes = M("Message");
			$data = $mes->where('status=1')->order('create_time desc')->select();	
			for($i=0;$i<sizeof($data);$i++){
				$data[$i]['create_time']=date("Y-m-d H:i:s",$data[$i]['create_time']);;
				$data[$i]['zongjia']=substr($data[$i]['zongjia'],2)."元";
			}
			
			$title = array("序號","訂單名稱","訂單備註","姓名","總價","數量","聯繫電話","地址","sort","type","狀態","下單時間","reply_info");
			exportexcel($data,$title,"萊昂".date("Y-m-d H:i:s"));
			
	}

第二個php文件(excel.php):

/**
    * 導出數據爲excel表格
    *@param $data    一個二維數組,結構如同從數據庫查出來的數組
    *@param $title   excel的第一行標題,一個數組,如果爲空則沒有標題
    *@param $filename 下載的文件名
    *@examlpe 
    $stu = M ('User');
    $arr = $stu -> select();
    exportexcel($arr,array('id','賬戶','密碼','暱稱'),'文件名!');
*/
 function exportexcel($data=array(),$title=array(),$filename='report'){
    header("Content-type:application/octet-stream");
    header("Accept-Ranges:bytes");
    header("Content-type:application/vnd.ms-excel");  
    header("Content-Disposition:attachment;filename=".$filename.".xls");
    header("Pragma: no-cache");
    header("Expires: 0");
    //導出xls 開始
    if (!empty($title)){
        foreach ($title as $k => $v) {
            $title[$k]=iconv("UTF-8", "GB2312",$v);
        }
        $title= implode("\t", $title);
        echo "$title\n";
    }
    if (!empty($data)){
        foreach($data as $key=>$val){
            foreach ($val as $ck => $cv) {
                $data[$key][$ck]=iconv("UTF-8", "GB2312", $cv);
            }
            $data[$key]=implode("\t", $data[$key]);
            
        }
        echo implode("\n",$data);
    }
 }


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