質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

10712閲覧

phpでcsv出力 改行できない

taaa

総合スコア32

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

2クリップ

投稿2016/11/02 22:58

###前提・実現したいこと

phpで任意の文字をcsvとして sample.csvに出力したい(上書き追記)
その際、一件ごとに改行させたい

"test1","test2","test3"
"test1","test2","test3"

最終的にはエクセルに出力したいです

###該当のソースコード

$fp = fopen("sample.csv", "a");

//普通に書き出す
fwrite($fp, '"test1"');
fwrite($fp, ',');
fwrite($fp, '"test2"');
fwrite($fp, ',');
fwrite($fp, '"test3"');
fwrite($fp, '\n');

上記をページリロードさせて複数回csv出力させてます

###結果

こうなります(sample.csv)
"test1","test2","test3"\n"test1","test2","test3"\n

この状態でエクセルに読み込ませると、全部が一行に表示されてしまってダメでした
どうしたら良いんでしょうか

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

改行の指定が間違ってます。二重引用符を使って、

PHP

1fwrite($fp, "\n");

にしてください。

投稿2016/11/02 23:05

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

というか,なぜfputcsvを使わないんでしょうか…?これを使えば文字列に,"が含まれたときにも適切にエスケープしてくれるのでラクですよ。

php

1$fp = fopen('sample.csv', 'ab'); 2 3fputcsv($fp, ['test1', 'test2', 'test3']); 4fputcsv($fp, ['te"st1', "te ,s't\n2", '']);

但し,何も設定しなくても問題ないExcel互換のファイルを作ろうとすると,もう少し工夫が必要です。特に日本語のデータが含まれる場合は文字セットに気をつけてください。

[PHP] Mac版Excelと互換性のあるCSVファイルを出来るだけ効率よく作成する - Qiita

この場合はCSVというよりTSVと呼ぶべきでしょうか。

php

1$fp = fopen('sample.csv', 'ab'); 2 3stream_filter_prepend($fp, 'convert.iconv.utf-8/utf-16le'); 4fwrite($fp, "\xEF\xBB\xBF"); 5 6fputcsv($fp, ['日本語1', '日本語2', '日本語3'], "\t"); 7fputcsv($fp, ['日本語"1', "日 本,語'\n2", ''], "\t");

投稿2016/11/03 02:53

編集2016/11/03 03:39
mpyw

総合スコア5223

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mpyw

2016/11/03 03:25 編集

失礼,情報が少々古いところがあったようです。今確認中ですのでもうしばらくお待ちを。 【追記】 どうやらMac版Office2016からはShift_JISを開けるみたいです。ただし,日本語以外のマルチバイト文字列(キリル文字やラテン文字やヘブライ文字や絵文字など)は文字化けしますし,依然として推奨される内容は変わりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問