CSVで先頭が0で始まる数字を吐き出すときに
データベースなどからエクセル用にCSVを吐き出すのはよくある処理だ。でも、昔から困っていたことがあって、電話番号の出力で大抵、問題が起きる。
例えば「03」というデータをCSVで普通に書き出して、エクセルで自動で読み込ませると、「3」に変換されてしまうのだ。例えば拡張子をdat等にしておき、エクセルをあらかじめ開いておいて、「ファイル」メニューから「開く」を選択し、「ファイルの種類」を「すべてのファイル」にして、テキストファイルウィザードを起動し、各カラムの形式を設定しつつ・・・ということをすれば、「03」と表示させることができる。今まではクライアントに「こうやってください」とお願いしてきた。しかし、これ、面倒。
拡張子をcsvにしてファイルを保存すると、そのファイルをダブルクリックすれば自動でエクセルがCSVを読み込んでくれる(もちろんエクセルがインストールされていればの話だが)。こういうことに慣れているわけだから、単にダブルクリックで開くだけでうまくいかないものか、とかねがね考えていた。「自動変換しない」とかのキーワードで検索したりしたけど、うまく見つけられなかった。
では、そのようなことが出来るのだろうか。答えはできる。CSVで出力するときはカンマ区切りのデータを作成する。で、各値は数字ならそのまま、文字列ならダブルクオーテーションでくくる。問題の0で始まる数字。これは以下のように書く(2つ目の項目)。
1, =”03″, “文字列”
当該文字列をダブルクォーテーションでくくり、前に=(イコール)を付ける。これでOKになる。今まで如何に調べ方が下手だったのかわかる。だってこんな簡単なことなのに・・・。