ごった煮

色々な事を書いてます

csv 出力時に、Excel で 0 が無視される問題とその解決方法について

DB のデータをダンプしたいといった場合、よくあるパターンだとそのまま csv に吐き出すみたいなことがありますが、電話番号や郵便番号の場合に、先頭の 0 が Excel で開いた場合に表示上消される場合があります。

その解決方法についてメモを残します。

やりたいこと

  • 出力した csv のカラムのうち、先頭が 0 などで Excel に無視される部分をプログラム的に解決したい

解決方法

値を ="" で囲んで出力する

C# などの言語では、モデルをから csv に変換してくれるライブラリがあるので、モデルに渡すタイミングで囲んであげましょう

下のような感じ

var tel = "00011112222";
var model = new CsvObj
{
    Id = 1,
    Tel = $"=\"{tel}"",
    Addr = "東京都千代田区1-1"
};

因みに Excel で 0 落ちを防ぐためによくある最初に ' を付けてあげるパターンは、自分の環境(Version 1908 (Build 11929.203838)) では、うまく動作しませんでした。(Excel で手動で ' を入力した場合は、動作しましたが、出力したものを直接読み込んでもうまく動作しませんでした。)

まとめ

よくあるパターンなので覚えておくと良いかと思います。