人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPに関する質問です。CSVのファイルをダウンロードさせて、きれいにエクセルにいれるようなことをしたいのですが、header などはどう書くとよいのでしょうか? すべて文字列でダウンロードするようにしたいのですが、”” をつければうまくゆくのでしょうか?勝手に日付として判断したりするのでそれを防ぎたいのです。

●質問者: kaiketsu
●カテゴリ:ウェブ制作
✍キーワード:CSV PHP エクセル ダウンロード ファイル
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● jouno
●20ポイント

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

エクセルなどのデータをダウンロードさせるようにするには


2 ● 黒猫
●20ポイント

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)〜

http://www.fukulog.com/memo/2005-07-06-9.html

福ろぐ

◎質問者からの返答

XMLがよさげですね。エクセルのバージョン依存ありそうですけど


3 ● kura_jet
●20ポイント

エクセルで表示した際に自動的に型を判断されるのを

防ぐには、データの各項目をダブルクォーテーションで囲み、前に「=」を付けることで文字として認識され、きれいに表示されます。


例)

=”148E-00”,=”2066-01”=”2005/09/99”


データとしては、使いづらいですが・・・

◎質問者からの返答

なるほどありがとうございました。


4 ● ito-yu
●20ポイント

http://r-troops.com/awpage/aw/jw/2.shtml

求人 学習 資格 マネー クレジットカード at r-troops.com

csvを読ませたときに、数値にしたり日付にしたり、というのはエクセルのオバカな挙動であって、phpではいかんともしがたいのでは。でも、URLのような補助ソフトを使えば、いいかも。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ