CSVの0落ちを防ぐ方法 ― EC運営者が知っておくべき原因と対策

ECサイトを運営していると、CSVファイルに触らない日はないと思います。受注データの出力、商品情報の一括登録、送り状データの作成。どれもCSVを介したやり取りです。

そんな日常のなかで、地味に厄介なのが「0落ち」。CSVをExcelで開いたら電話番号の先頭0が消えていて、送り状に「9012345678」って印字されてしまった——心当たり、ありませんか。

文字化けと違ってパッと見では気づきにくいし、そのまま処理してしまうことも多いんですよね。この記事では、0落ちのメカニズムと、実務で使える対策を紹介します。

0落ちが起きるしくみ

原因はシンプルで、Excelが数字っぽいデータを「数値」として扱ってしまうからです。

CSVの中に 09012345678 という文字列があったとします。Excelはこれを見て「お、数字だな」と判断し、数値型のセルに格納します。数値として解釈すれば先頭の0は不要なので、自動的に 9012345678 に。

Excelとしては親切心からやっている処理なんですが、電話番号や郵便番号みたいに先頭の0に意味があるデータだと、これが裏目に出ます。090で始まる携帯番号の0が消えたら、もう別の番号ですからね。

影響を受けるデータの例

データ種別本来の値Excelで開いた結果桁数
携帯電話番号09012345678901234567811桁
固定電話番号031234567831234567810桁
郵便番号0010012100127桁
JANコード049123456789049123456789013桁
顧客コード00042425桁

EC業務では、この表に載っているほぼ全部を日常的に扱いますよね。送り状、受注CSV、商品マスター……どれも0落ちのリスクを抱えています。

いちばん怖いのは「気づかないまま処理してしまう」こと

文字化けなら画面を見た瞬間に「あ、おかしい」とわかるので、まだ傷は浅いです。0落ちが厄介なのは、電話番号が10桁か11桁かなんて、パッと見ではなかなか気づけないところ。

「09012345678」が「9012345678」になっていても、数字の羅列をひとつひとつ数えない限りわかりません。結果として、送り状の電話番号が間違ったまま出荷されたり、JANコードの先頭0が欠けたままモールに登録してバーコードが読めなくなったり。どちらも実際に起きている話です。

0落ちの対策

対策1: CSVをExcelで「直接」開かない

身もフタもない話ですが、これがいちばん確実な予防策です。CSVをダブルクリックするのをやめて、Excelの「データの取得」経由で読み込みます。

「データ」タブ →「テキストまたはCSVから」でCSVを指定すると、プレビュー画面が出ます。ここで各列のデータ型を「テキスト」に変更してから取り込めば、0落ちは起きません。

ただ、毎回この手順を踏むのはけっこう面倒ですし、アルバイトのスタッフや業務委託先にこの手順を徹底させるのはなかなか大変です。「ダブルクリックしないでね」と伝えても、人はダブルクリックするんですよね……。

対策2: 0が落ちたCSVを修復する

すでに0が消えてしまったCSVがある場合でも、桁数を指定してゼロパディング(先頭に0を補完する処理)をかければ復元できます。

たとえば電話番号の列なら「11桁に足りない値は先頭に0を足して11桁にする」という処理です。ただし、固定電話(10桁)と携帯電話(11桁)が混在しているケースだと、一律11桁にするわけにはいかないので少し注意が必要です。

CSV Rescueの0落ち修正ツールなら、列を選んで桁数を指定するだけ。プレビューで確認してからダウンロードできます。

0落ち修正ツールを使う →

対策3: CSVじゃなくてExcel形式で受け渡す

チーム内でのデータ共有なら、CSV形式をやめてExcel(.xlsx)にしてしまうのが根本的な解決策です。.xlsxファイルならセルの書式として「文字列」を指定できるので、先頭の0は消えません。

受注CSVをシステムからダウンロードしたら、まずExcel形式に変換してから社内に展開する。この一手間で、以降の工程で0落ちに悩まされることがなくなります。

CSV RescueのCSV→Excel変換ツールで、ドロップするだけでExcelファイルに変換できます。

対策4: CSV出力時に対策しておく(開発者向け)

もし自分がCSVを出力する側の立場なら——たとえば自社ECのエクスポート機能を開発しているような場合は、出力時に対策を仕込んでおくのがベストです。

よく紹介されるのは、0落ちが問題になる列の値をダブルクォートで囲む方法です。

名前,電話番号,郵便番号
田中太郎,"09012345678","0010012"
鈴木花子,"0312345678","1000001"

……ただ、残念ながらこれだけだと不十分です。Excelはダブルクォートで囲まれていても、中身が数字だけなら数値として解釈してしまいます。

どうしてもCSVのまま配布する必要があり、相手がExcelでダブルクリックする前提なら、各セルの先頭に = を付けて数式文字列として扱わせるテクニックがあります。

名前,電話番号,郵便番号
田中太郎,"=""09012345678""","=""0010012"""
鈴木花子,"=""0312345678""","=""1000001"""

この形式ならExcelでダブルクリックしても先頭0が残ります。ただ、見た目がだいぶ汚くなりますし、このCSVを別のシステムにインポートしようとすると = がゴミとして残る可能性も。万能な方法とは言いがたいです。

EC業務での現実的な運用ルール

現場で統一的に使えるルールとしては、こんな感じが現実的かなと思います。

モールやカートシステムからCSVをダウンロードしたら、テキストエディタ(サクラエディタ、VSCodeなど)でまず中身を確認する。Excelで開く必要がある場合は、先にExcel形式に変換してから開く。社内で共有するデータはCSVではなくExcel形式にする。

とくに気をつけたいのが「CSVを編集して、モールに再アップする」場面です。Excelで開いて編集した時点で0落ちが起きている可能性があるので、アップロード前にテキストエディタで電話番号やJANコードの桁数をチェックしておくと安全です。ほんのひと手間ですが、出荷事故を防げると思えば安いものです。

Googleスプレッドシートでも0落ちは起きる?

起きます。Googleスプレッドシートも、数字だけのセルは数値として扱うので、CSVをインポートしたときに先頭0が消えるのはExcelとまったく同じです。

Googleスプレッドシートの場合はインポート時に「列のデータ型を検出しない」というオプションがあります。これを使えば全セルがテキスト扱いになりますが、逆に数値として計算したい列もテキストになってしまうので、あとから手動で調整する必要があります。

まとめ

0落ちは、CSVとExcelの相性の悪さが引き起こす構造的な問題です。Excelが「気を利かせて」数値に変換してしまう以上、利用者側で気をつけるしかありません。

面倒ではありますが、「CSVをダブルクリックで開かない」「社内共有はExcel形式で」——この2つを徹底するだけで、0落ちがらみのトラブルはかなり減ります。すでに0が落ちてしまったデータは、桁数を指定したゼロパディングで復元できます。

CSVの0落ち修正は、列を選んで桁数を指定するだけ。プレビューで修正結果を確認できます。

0落ち修正ツール →
関連記事: CSVが文字化けする原因と直し方 ExcelでCSVが文字化けするときの対処法 CSVインポートエラーの対処法まとめ 2つのCSVの差分を比較する方法