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