我在PHP中使用fputcsv輸出數據庫查詢的逗號分隔文件。當在Ubuntu的gedit中打開文件時,它看起來是正確的 - 每個記錄都有一個換行符(沒有可見的換行符,但可以告訴每個記錄是分開的,在OpenOffice電子表格中打開它可以正確查看文件。)fputcsv和換行符
然而,我們在發送這些文件在客戶端上的Windows,並在他們的系統中,文件進來作爲一個大的,長的線。在Excel中打開它,它根本不識別多行。
我已經閱讀了幾個相似的問題,其中包括this one,其中包含一個鏈接,提供了一個真正的信息性的解釋Great Newline Schism。
不幸的是,我們不能只是告訴我們的客戶在一個「智能」編輯器打開該文件。他們需要能夠在Excel中打開它們。是否有任何編程方式來確保添加正確的換行符,以便可以在任何操作系統的電子表格程序中打開文件?
我已經使用了自定義的功能,迫使所有值的報價,因爲fputcsv是選擇它。我試着做這樣的事情:
function my_fputcsv($handle, $fieldsarray, $delimiter = "~", $enclosure ='"'){
$glue = $enclosure . $delimiter . $enclosure;
return fwrite($handle, $enclosure . implode($glue,$fieldsarray) . $enclosure."\r\n");
}
但是當文件在Windows的文本編輯器打開時,它仍然顯示爲一個單一的長行。
+ 1用於突出顯示我一直在使用 – 2010-11-02 23:30:25
的問題是否包含您的csv字段標題? – ajreal 2010-11-16 19:02:49
在比較上面的代碼和接受的解決方案(假設這個文件是在Linux上生成的)時,它看起來像原來的問題可能是將文件傳輸到客戶端,而不一定是它的生成。例如,通過ASCII模式下的FTP(從Linux到Windows)下載原始文件(使用CR + LF EOL)會導致行結束被破壞。 – MrWhite 2013-10-24 23:32:24