php导出excel文件,数据导出为xls格式

<?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)){
        print_title($title);
    }
    if (!empty($data)){
        print_data($data);
    }
}

function print_title($title){
    foreach ($title as $k => $v) {
        $v = str_replace(array("\r","\n","'",'"',"\t"),'',$v);
        $title[$k]=iconv("UTF-8", "GB2312//IGNORE",$v);
    }
    $title= implode("\t", $title);
    echo "$title\n";    
}

function print_data($data){
    foreach($data as $key=>$val){
        foreach ($val as $ck => $cv) {
            $cv = str_replace(array("\r","\n","'",'"',"\t"),'',$cv);
            $data[$key][$ck]=iconv("UTF-8", "GB2312//IGNORE", $cv);
        }
        $data[$key]=implode("\t", $data[$key]);
        
    }
    echo implode("\n",$data)."\n";    
}

function chg_charset(&$arr){
    foreach($arr as $k=>$v){
        $v = str_replace(',',';',$v);
        $arr[$k] = iconv('utf-8','gb2312',$v);    
    }    
}
?>

有话要说