原理很簡單,就是用php輸出一個header頭,可以直接讓瀏覽器下載文件
單元格內容用英文逗號分隔, 其中為了防止亂碼,漢字部分會進行一個轉碼操作,從utf8轉為gbk
為了使單元格看起來直觀一點,會增加個\t ,這樣就不會看的時候出現#########
比如下面這個把moveusers數組作為csv文件下載
if(isset($_REQUEST['act'])&& $_REQUEST['act']=="downloadAll") {
$outformat = "entmove.csv";
$title = "郵箱名,姓名,郵箱密碼,搬家狀態,開始時間,結束時間,郵件總數,收取數,失敗數\n";
$data = "";
foreach ($moveUsers as $b) {
$status = iconv("utf-8", "gbk//IGNORE", $b['status_text']);
$realName = iconv("utf-8", "gbk//IGNORE", $b['realName']);
$data .= "{$b['account']}\t,{$realName}\t,{$b['password']},{$status}\t,{$b['movetime']}\t"
. ",{$b['endtime']}\t,{$b['totle']},{$b['successnum']},{$b['failnum']}\n";
}
$title = iconv("utf-8", "gbk//IGNORE", $title);
$data = $title . $data;
header("Cache-control: private");
header("Pragma: public");
header('Content-type: application/x-csv');
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 5')) {
header("Content-Disposition: inline; filename=$outformat");
} else {
header("Content-Disposition: attachment; filename=$outformat");
}
echo $data;
exit;
}

