- ベストアンサー
PHPでCSVを出力する際のセルについて
PHP(LAMP)にてCSVファイルをダウンロードしています。通常の文字列として「1-21」「41-3」などの数字(住所の番地など)を表示したいのですが、自動で引き算したり年月日表示になったりしてしまいます。テキストエディタで確認した場合はキチンとでています。CSVで開く際、最初から文字列というか特に引き算や年月日状態になっていない元の状態で表示する方法をご存知でしょうか。どうぞ宜しくお願い申し上げます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
試しにやってみましたがダメみたいですね、何てEXCELって気が利いてるんだろう・・・余計なお世話って感じですけど。全角で記述してもご丁寧に半角にしてくれちゃうし。 シングルクォーテーションなら文字列扱いになるみたいですが、確かにシングルクォーテーション自体も表示されてしまいますね。これがまずければ、型指定しながらCSVを読み込むようなVBスクリプトを書いたEXCELのシートを作って配布する位しかないのかな。VBスクリプトは専門外なのでどう実装するかはわかりませんが。
その他の回答 (3)
- athanasius
- ベストアンサー率37% (361/964)
いっそのこと、excel で 出力するというのはどうですか? pear のパッケージに「 Spreadsheet_Excel_Writer 」というものがあり、これでは、excel のフォーマットでファイル出力ができるようです。 注意するのは、日本語のコードは、Shift-JIS ということ。
お礼
はい。その方向でやってみます! PHPはすごいですよね。PDF出力・グラフ出力に加えてEXCELにもなんて・・。 そういえば「phpmyadmin」もCSVやEXCELの出力ができるということはこのSpreadsheet_Excel_Writerを利用しているのでしょうか??
- wakame0729
- ベストアンサー率32% (245/765)
"1-21"といった文字列が数値扱いになってるという事でしょうね。CSVを生成する際、文字列部分を明示的に""または''で括ってあげると正常に表示できるかも知れません。 '100-0001','東京都千代田区', みたいな感じです。
お礼
ありがとうございます。やってみたのですが、プログラムで生成し、そのままCSVに吐き出した場合、そのまま「"」が残ってしまうようです。。
- inu2
- ベストアンサー率33% (1229/3720)
それは、PHPのお仕事は既に終了していますので エクセルの方で質問されてはいかがでしょうか? 私の場合の解決方法を書きますが、もっと簡単な方法があるかもしれません ダウンロードしたCSVファイルの拡張子をtxtに変更 (便宜上download.txtと呼ぶ) download.txtを右クリックして、アプリケーションで開く>エクセルで開く そうするとAの列に 1-21,41-3 等と1行分のデータがごっちゃになって入ってくる A列を選択して データ>区切り位置 カンマやタブなどの区切り文字によってフィールドごとに区切られたデータを選択[次へ>] カンマ を選択して[次へ>] 1フィールドごと、データの形式を選択して、文字列を選択 あとはやれば分かると思います
お礼
ありがとうございます。TEXTをエクセルで読み出す感じですよね。確かにそのような方法もありますね! ただ、お客様に提供するので、CSVでなければいけないのです。。。お客様はTXTとCSVの区別もできませんので。。
お礼
ありがとうございます!試していただいて・・。EXCELってほんと便利ですよね。なんとか工夫してやってみます。