PHP导出数据库数据至Excel

<?php
/**
 * 导出到excel文件(一般导出中文的都会乱码,需要进行编码转换)
 * 使用方法如下
 * $excel = new Excel();
 * $excel->addHeader(array('列1','列2','列3','列4'));
 * $excel->addBody(
            array(
                array('数据1','数据2','数据3','数据4'),
                array('数据1','数据2','数据3','数据4'),
                array('数据1','数据2','数据3','数据4'),
                array('数据1','数据2','数据3','数据4')
            )
        );
 * $excel->downLoad();
 */
class Excel{
    private $head;
    private $body;
    
    /**
     * 
     * @param type $arr 一维数组
     */
    public function addHeader($arr){
        foreach($arr as $headVal){
            $headVal = $this->charset($headVal);
            $this->head .= "{$headVal}\t ";
        }
        $this->head .= "\n";
    }
    
    /**
     * 
     * @param type $arr 二维数组
     */
    public function addBody($arr){
        foreach($arr as $arrBody){
            foreach($arrBody as $bodyVal){
                $bodyVal = $this->charset($bodyVal);
                $this->body .= "{$bodyVal}\t ";
            }
            $this->body .= "\n";
        }
    }
    
    /**
     * 下载excel文件
     */
    public function downLoad($filename=''){
        if(!$filename)
            $filename = date('YmdHis',time()).'.xls';
        header("Content-type:application/vnd.ms-excel");
        header("Content-Disposition:attachment;filename=$filename"); 
        header("Content-Type:charset=gb2312");
        if($this->head)
            echo $this->head;
        echo $this->body;
    }
    
    /**
     * 编码转换
     * @param type $string
     * @return string
     */
    public function charset($string){
        return iconv("utf-8", "gb2312//IGNORE", $string);
    }
	  /**
     * 特殊符号转换
     * @param type $string
     * @return string
     */
	public function htmlcode($value)
	{
		//替换空格和换行
		$value = str_replace("\n", "<br>", str_replace("\r\n", "<br>",str_replace(" ", " ", $value)));
		$value = mysql_real_escape_string($value);
		// 去除斜杠
		if (get_magic_quotes_gpc())
		{
		  $value = stripslashes($value);
		}
		return $value;
	}
}

$excel = new Excel();
$excel->addHeader(array('学号','姓名','性别','学院','专业名称','年级','问题1','问题2','问题3','问题4','问题5','问题6','问题7','问题8','问题9','问题10','是否已做问卷(1-已做,0-未做)'));
$conn = @ mysql_connect("localhost", "root", "") or die("数据库链接错误");
mysql_select_db("survey", $conn);
mysql_query("set names 'utf8'");
$sql = "SELECT * FROM info WHERE 1";
$re = mysql_query($sql);
 while($row = mysql_fetch_array($re))
 {
 $excel->addBody(
	array(
		array($row[1],$row[2],$row[3],$row[4],$row[5],$row[6],$row[7],$row[8],$row[9],$row[10],$row[11],$row[12],$row[13],$row[14],$row[15],$row[16],$row[17])
	)
);
}
$excel->downLoad();

?>

你可能感兴趣的:(PHP导出数据库数据至Excel)