csv出力 - PHPプロ!Q&A掲示板

127

  • 100P

csv出力

質問日時 / 2006年8月4日 15:26    回答数 / 6件

Questioner:  haruhiko  このエントリーをはてなブックマークに追加 

キーワード / csv    ファイル   

お世話になります。
PHPからcsv形式でデータをファイルに書き出しているのですが、
データの先頭に0がある場合に、Excelで開くと、0が消えてしまいます。
その状態で、上書き保存なんかされると非常にまずいわけなんですが、
これは何とかならないものでしょうか?
ちなみに
・各項目は""で囲っています。
・数字を全角にしてもだめでしたorz
なんとかならないでしょうか?
よろしくお願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

Qcsv出力haruhiko
┣A01adAtype_kyoutaExcelでは数列データの先頭にシングルクォーテーショ
┃┗A01-1haruhiko先頭に'をつけてやってみたんですができませんでした
┣A02adAtype_kyoutaExcelでの表示上では、「'」をつけた数列は(0が表示さ
┃┗A02-1haruhiko>Excelでの表示上では、「'」をつけた数列は(0が表示
┗A03eyepyon>PHPからcsv形式でデータをファイルに書き出している
 ┗A03-1haruhikoPEAR::Spreadsheet_Excel_Writerで無事できました!!

回答一覧

並び替え:

A01
answereradAtype_kyouta [8月4日 16:01]

Excelでは数列データの先頭にシングルクォーテーション「'」をつけることで文字列として認識されるはずです。
モノに依りますがデータをシステムに噛ませるユーザなどもいると思いますので、エクセル用とデータリソース用に切り替えるチェックボックスを設けるなど工夫が必要かもしれません。

この意見に回答する

ツリーへ TOPへ

A01-1
replyerharuhiko [8月4日 18:25]

先頭に'をつけてやってみたんですができませんでした。
以下テスト内容です。(意味が違っていたらすいません)

データ
'0001,"0001",'0001',"'0001"

Excelで開くと
'0001  1  '0001'  '0001

ちなみにExcelはOfficeの2003です。
今更なんですがPHP関係ないですね。Excelの問題だからどうしようもない気がしてきました。

この意見に回答する

ツリーへ TOPへ

A02
answereradAtype_kyouta [8月4日 18:47]

Excelでの表示上では、「'」をつけた数列は(0が表示される)文字列になり「'」は見えないですよね?
CONCATENATE関数などで文字列連結させた場合でも「'」は文字として扱われないのですが、やはりそこまでですね・・・。

この意見に回答する

ツリーへ TOPへ

A02-1
replyerharuhiko [8月7日 16:46]

>Excelでの表示上では、「'」をつけた数列は(0が表示される)文字列になり「'」は見えないですよね?

いや、だめでしたorz

データ 
'0001,"0001",'0001',"'0001" 
Excelで開くと 
'0001  1  '0001'  '0001

結局PEAR::Spreadsheet_Excel_Writerを使うことで解決しました。
ありがとうございました。

この意見に回答する

ツリーへ TOPへ

A03 満足
answerereyepyon [8月5日 00:16]

>PHPからcsv形式でデータをファイルに書き出しているのですが、
>データの先頭に0がある場合に、Excelで開くと、0が消えてしまいます。
>なんとかならないでしょうか?


EXCELの問題のように思えますのでCSVで出してる以上、どうにもならない気がします。
pearのSpreadsheet_Excel_Writerなどを使って、xlsファイルで出力するのが
確実かと思われます。
http://pear.php.net/manual/ja/package.fileformats.spreadsheet-excel-writer.php

writeStringで文字と指定して書き込めます
http://pear.php.net/manual/ja/package.fileformats.spreadsheet-excel-writer.spreadsheet-excel-writer-worksheet.writestring.php

また、writeNumberで数値としても書き込む事できます。
http://pear.php.net/manual/ja/package.fileformats.spreadsheet-excel-writer.spreadsheet-excel-writer-worksheet.writenumber.php


検索しましたら、ちょうどいいサンプルがありした。
http://www.twintail.tv/mt/archives/2005/06/phpexcelpear.html

この意見に回答する

ツリーへ TOPへ

A03-1
replyerharuhiko [8月7日 16:50]

PEAR::Spreadsheet_Excel_Writerで無事できました!!
いやホントに助かりました。ありがとうございます。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
マジッククォートとmysql_real_escape_string
 このエントリーをはてなブックマークに追加 
A
magic_quotes_gpcでは、SQLインジェクション対処は十分できません。主な理由として、以下が上げられます。 ・magic_quotes_gpcは文字コードを考慮しないで処理するので、Shift_JISを使っている場合、SQLインジェ...

>>続きを読む

SQLインジェクション対策は時と場合で使う関数が変わります。その時にあったものを使いましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)