http://oshiete1.goo.ne.jp/kotaeru.php3?q=1434940
[教えて!goo] PHPでCSVを出力する際のセルについて
win ieは拡張子で判断するのでエクセルで開かせるのにはヘッダーは関係ないようです。
xlsにしておくと自動で開いてくれるのでは。実際にはcsvなのであれですが。
その他では、ヘッダーは、
AddType application/octet-stream xls
が同じ効果があります。
で、開いた後のことは、phpは関係ないです。エクセルのcsvの自動変換の問題です。で、どうも、きちんと型指定する方法はないようです。シングルクオーテーションにすると、文字列にはなるようですが、他の数字などの型を強制指定するのは難しそうです。
紹介されているエクセルではじめから出力する方法のURLも加えておきますが、こちらはpearがインストールできる必要があるので、敷居が高いかもしれません。
http://fol.axisz.jp/php/man/pear/package.fileformats.spreadsheet...
Spreadsheet_Excel_Writer
http://www.tohoho-web.com/lng/199804/98030045.htm
エクセルなどのデータをダウンロードさせるようにするには
http://arena.nikkeibp.co.jp/tec/excel/20040309/107674/
CSVファイルの「0012」が「12」と読み込まれてしまう / デジタルARENA
Excelでは、どうしてもCSVを読み込むときに自動判別してしまいます。
CSV自体が単なるテキストファイルなので、ヘッダなどで、どうこうできるような話ではないと思います。
「全てのセルの書式を”文字列”で取り込む」ようなオプションって、あるといいですよね。
(私が知らないだけかもしれませんけれど…)
紹介したURLは、わざわざ拡張子を変えていますが、Excelのメニューから 「データ(D) 」→ 「外部データの取り込み(D)」 → 「データの取り込み(D) 」で、CSVファイルを取り込んでも、テキストファイルウィザードを起動できます。
手間が多くなりますが、全てのセルを直さなくて良くなる分、まだ良いかと思います。
で、PHP側での対処をするなら、XMLで出力するのが良いかと。
Excel自体がXMLを処理する機能を持ってますし、HTMLでの”TABLE”タグでだらだらと書かれた表でも、上記のデータ取り込み(「新しいWebクエリ」ですが)でキレイに読み込めたりします。
一応、PHPでEXCELデータを作るライブラリのURLも入れておきます。
http://hp.vector.co.jp/authors/VA014071/tips/txtwiz_1.html
Mr.Big〜小技集・Excel でテキストファイルを読み込む(1/2)〜
エクセルで表示した際に自動的に型を判断されるのを
防ぐには、データの各項目をダブルクォーテーションで囲み、前に「=」を付けることで文字として認識され、きれいに表示されます。
例)
=”148E-00”,=”2066-01”=”2005/09/99”
データとしては、使いづらいですが・・・
なるほどありがとうございました。
http://r-troops.com/awpage/aw/jw/2.shtml
求人 学習 資格 マネー クレジットカード at r-troops.com
csvを読ませたときに、数値にしたり日付にしたり、というのはエクセルのオバカな挙動であって、phpではいかんともしがたいのでは。でも、URLのような補助ソフトを使えば、いいかも。
XMLがよさげですね。エクセルのバージョン依存ありそうですけど