先頭の0が消えないCSVファイルの作り方

東京kです。こんにちは。
なんか、このBlogが食べ物の話題だらけになっていると聞きつけて、久しぶりに投稿です。
とはいえ、すぐに出てくるネタが無いので、割と知っている人は知っている的な技術話題を。

業務でCSVファイルってよく使いますよね?
でもよくある話しの一つとして『「0123」等の値がExcelで開いても「123」になってしまう。』問題があります。
今回はそれを解決するお話し。

この問題のアプローチは2つあります。

  • ファイルを開くときに対処するか
  • ファイルを作るときに対処するか

です。今回は後者で、普通に開いても0が消えないCSVの作り方です。

この話の前に、そもそもCSVファイルはなんぞや?という話はありますが、語り始めると長いので割愛します。
簡単に言うと「カンマで区切られたデータが入ったテキストファイルで、ソフト毎の方言が非常に多いファイル形式」ですね。

今回のミソは、この「ソフト毎の方言が非常に多い」部分。

全てのソフトで読めるCSVファイルの場合「先頭の0が消える問題」は解決する事は出来ませんが、Excelの方言を用いれば、可能です。
そこで、Excelで読み込んだときに先頭の0を消さないCSVの作り方の話しです。

(長い前振りだなぁ・・・)

通常のCSVファイルは以下の様な形式ですね?

地区名,市外局番
東京,03
大阪,06

これを読み込んでも、Excelでは「03」は【数値】として扱ってしまい「3」になります。これが0が消える原因です。
一方で、Excelでは【数値】ではなく【文字列】なら先頭の0が消えること無く扱えます。そこで、次のようにCSVファイルを作ってみましょう。

地区名,市外局番
東京,=”03″
大阪,=”06″

=で始まる項目はExcelの方言で【数式】を表します。
つまり、Excelのセルに「=”03″」といった数式を入れる事になります。この数式での「”03″」は文字列として扱われますので、最終的にExcelはこのセルを【文字列】として表示し「03」となります。

ね?簡単でしょ?

あとは、これをお使いのCSV生成処理に組み込むだけです。
正規表現で「,\s*(0[0-9]+)\s*,」を置換してしまうとか、CSV生成機能に直接手を入れるとか、お好きにどうぞ。

ではではー