PHP で fputcsv を使用して、データベース クエリのコンマ区切りファイルを出力しています。Ubuntu の gedit でファイルを開くと、正しく表示されます。各レコードには改行があります (改行文字は表示されませんが、各レコードが区切られていることがわかります。OpenOffice スプレッドシートで開くと、ファイルを正しく表示できます。)
ただし、これらのファイルを Windows 上のクライアントに送信すると、クライアントのシステムでは、ファイルが 1 つの大きな長い行として受信されます。Excelで開くと、複数行がまったく認識されません。
ここには、非常に有益な Great Newline Schismの説明へのリンクが含まれているthis oneなど、かなり似ている質問がいくつかあります。
残念ながら、クライアントに「よりスマートな」エディターでファイルを開くように指示することはできません。それらを Excel で開くことができる必要があります。任意の OS のスプレッドシート プログラムでファイルを開くことができるように、正しい改行文字が追加されていることを確認するプログラム的な方法はありますか?
fputcsvはそれについて選択的であるため、私はすでにカスタム関数を使用してすべての値を強制的に引用しています。私はこのようなことを試みました:
function my_fputcsv($handle, $fieldsarray, $delimiter = "~", $enclosure ='"'){
$glue = $enclosure . $delimiter . $enclosure;
return fwrite($handle, $enclosure . implode($glue,$fieldsarray) . $enclosure."\r\n");
}
ただし、ファイルを Windows テキスト エディターで開くと、依然として 1 行の長い行として表示されます。