CSVを開くと文字化け・0落ち・日付に化ける。原因を切り分ける3つのチェック
取引先や基幹システムから受け取ったCSVをExcelで開いたら、文字が化けていた。伝票番号の先頭の0が消えていた。日付のはずの列が違う日付に変わっていた──これらは別々の不具合に見えて、原因の切り分け方はだいたい同じです。コードを書く前に確認したい3つのポイントをまとめました。■1. 文字コードは「Shift-JIS」か「UTF-8」かExcelでダブルクリックして開いたCSVが文字化けする場合、多くはファイルの文字コード(Shift-JISかUTF-8か)とExcelの想定が食い違っています。ダブルクリックではなく「データ」タブ→「テキストまたはCSVから」で読み込み、プレビュー画面で文字コードを切り替えて正しく表示される方を選ぶと、化けずに読み込めることがあります。VBAでCSVを扱っている場合も、読み込み処理側の文字コード指定を疑ってください。■2. 「0落ち」は列の書式が原因伝票番号や郵便番号の先頭の0が消えるのは、Excelがその列を「数値」として自動認識し、先頭の0を切り捨てるためです。ダブルクリックで開くと防げないので、上記と同じ「テキストまたはCSVから」の読み込み画面で、該当列の書式を「文字列」に指定してから読み込むと0が残ります。すでに0落ちしたファイルは、元のCSVから読み込み直す以外に復元する方法がない点に注意してください。■3. 日付が化けるのは「自動変換」が原因「3-1」のような文字列を日付だとExcelが自動で判断し、意図しない日付に変換してしまうケースです。品番やコード類が数字と記号だけで構成されていると起きやすい不具合です。対策は0落ちと同じで
0