/** * PHP通過sql生成CSV文件並下載 * @param string $sql 查詢sql,結果為二維數組 * @param array $title 數據,CSV文件標題 * @param boolean $retuen 是否只返回數據 * @param string $filename 文件名 */ function DownLoadCsvBySQL($sql,$title,$retuen=false,$filename='DownLoad.csv'){ $resoure = mysql_query($sql); $data = array(); if(!$resoure) exit('Select empty!'); while($rows = mysql_fetch_assoc($resoure)) $data[] = $rows; if($retuen) return $data; if(empty($data)) exit('data is empty'); ob_start(); $file = fopen("php://output", 'w'); fwrite($file,chr(0xEF).chr(0xBB).chr(0xBF)); fputcsv($file, $title); foreach($data as $k=>$v) fputcsv($file, $v); Header("Content-type: application/octet-stream"); #通過這句代碼客戶端瀏覽器就能知道服務端返回的文件形式 Header("Accept-Ranges: bytes"); #告訴客戶端瀏覽器返回的文件大小是按照字節進行計算的 #Header("Accept-Length: ".filesize($filename)); #告訴瀏覽器返回的文件大小 Header("Content-Disposition: attachment; filename=".$filename); #告訴瀏覽器返回的文件的名稱 echo fread($file,999999); fclose($file); }