/**
* 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);
}