2013-05-17 53 views
3
<?php 

$filename="backup_".date('m/d/Y', time()).".csv"; 

header('Content-Type: text/csv; charset=utf-8'); 
header('Content-Disposition: attachment;filename="'.$filename.'"'); 
header('Cache-Control: max-age=0'); 

$q=mysqli_query($conn,"SELECT * FROM visitordb"); 
$file = fopen('php://output','w'); 
if(mysqli_num_rows($q)>0) { 
    while($res = $q->fetch_assoc()) { 
     $datas = $res["sno"].','.$res["UDID"].','.$res["taggnumber"].','.$res["name"].','.$res["designation"].','.$res["company"].','.$res["email"]; 
     fputcsv($file, explode(',', $datas)); 
    } 
} else { 

} 

fclose($file); 
} 

上面的代碼在ms excel中查看時在.csv文件的開頭會生成空行。還有一件事.csv文件也會在頁面中生成任何html代碼。fputcsv在.csv開頭插入空行

+0

確保沒有從你的腳本沒有其他的輸出,並退出後關閉$ file –

+0

不要依靠Excel來告訴你CSV是什麼樣的。 .csv的外觀如何? – deceze

+0

嘗試將文件簡單地保存到磁盤,並在開始時查看是否有空行。 –

回答

3

如果刪除標題指令,會發生什麼情況? 您必須知道標題按照定義由新行結束。 我可以想象這是一個\ n vs \ r \ n衝突。

如果一切都失敗了,得到全輸出入緩衝液後修剪:

ob_start(); 
...your code... 
$out = ob_get_contents(); 
ob_end_clean(); 
echo trim($out); 

問候

索爾特

+0

謝謝!這工作很好! – warelord

+0

不客氣。請注意,修剪還會刪除尾隨空格。如果您需要保持csv 100%安全,請使用其他字符串操作。 –

+0

@Zsolt Szilagyköszönöm。我有同樣的問題,不知道標題指令是添加一個新的行。在我的情況下,我寫我的輸出到一個臨時文件(PHP的tmpfile()),所以我只需要做一個ob_end_clean();在循環播放我的文件並回顯它之前。 – BryanT