ホーム読みもの

CSVを開くと文字化けする、前ゼロが消える、日付が勝手に変わる

システムから出したCSVをExcelで開いた瞬間に壊れる。これは不具合ではなく仕様なので、開き方を変えるか、出し方を変えるかのどちらかで対処します。

読了 約5分 CSVExcelトラブル対応

システムから出したCSVをExcelで開いたら、こうなった。

  • 日本語が ���譁�蟄怜喧縺� のように化けている
  • 社員番号 00123123 になっている
  • 商品コード 1-22001/1/2 になっている
  • 3.103.1 になっている
  • 長い数字 123456789012341.23457E+13 になっている

全部、Excelの仕様どおりの動きです。不具合ではないので、待っても直りません。対処は2方向あります。

なぜ起きるか(1分だけ)

CSVは、ただのテキストです。どの列が何の型なのかという情報を持っていません。

なので Excel は、開くときに中身を見て推測します。

  • 00123 → 数値だな → 前ゼロは不要 → 123
  • 1-2 → 日付っぽいな → 2001/1/2
  • 長い数字 → 桁が多いな → 指数表記に

文字化けのほうは別の話で、文字コードの取り違えです。日本語のCSVは UTF-8 か Shift_JIS のどちらかで書かれていますが、CSVにはそれを示す情報が無いことがあり、Excelが違うほうだと思って開くと化けます。

対処1:開き方を変える(相手のCSVを変えられない場合)

化けるだけなら、いちばん簡単な方法

ファイルをダブルクリックで開かない。これだけで解決することが多いです。

Excel を先に起動して、[データ]→[テキストまたはCSVから]で読み込みます。この画面では、

  • 文字コードを選べる(65001: UTF-8 / 932: 日本語 Shift-JIS)
  • プレビューで、化けていないほうを選べばいい

型が壊れるのを防ぐ

同じ読み込み画面で、[データの変換]に進むと列ごとの型を指定できます。ここで、

  • 社員番号・商品コード・電話番号・郵便番号 → テキスト
  • 日付 → 日付(形式を指定)

「コードっぽいものは全部テキスト」と覚えておけば、だいたい事故りません。コードは計算しないので、文字として扱って困ることはありません。

メモ帳で開いて確かめる

化けているかどうかは、メモ帳で開けば分かります。メモ帳で正常に読めるのに Excel で化けるなら、文字コードの問題です。メモ帳でも化けているなら、出したシステム側の問題です。切り分けが1分で済むので、覚えておくと便利です。

対処2:出し方を変える(自分たちで出す場合)

自動化の中でCSVを作るなら、こちらのほうが根本的です。

文字コードは UTF-8(BOM付き)にする。「BOM」は、ファイルの先頭に付ける短い印です。これが付いていると、Excel は UTF-8 だと判断してくれるので、ダブルクリックで開いても化けません。日本語のCSVをExcelに渡すなら、BOM付きUTF-8がいちばん事故が少ないです。

コード類は、囲むだけでは足りない。"00123" のようにダブルクォートで囲んでも、Excelは前ゼロを落とします。囲むのはカンマ対策であって、型の指定ではありません。

どうしても崩したくないなら、

  • 受け渡しをCSVではなく .xlsx にする(型を持てます)
  • あるいは、渡し先で「テキストとして読み込む」運用を決める

前者が可能ならそれがいちばん確実です。Power Automate でも Excel ファイルとして書き出せます。

対処3:壊れたことに気づける形にする

いちばん怖いのは、化けたことではなく気づかずに次の処理へ流れることです。

自動化に組み込むなら、取り込んだ直後にこれを見ます。

  • 件数が想定と合っているか(0件で正常終了していないか)
  • キーになる列(社員番号、取引先コード)に空欄が無いか
  • 突き合わせで一致しなかった件数が、いつもより多くないか

3つめが実務的です。前ゼロが落ちたときの典型的な症状が「突き合わせが軒並み失敗する」なので、一致しなかった件数がいつもと違ったら止める。これだけで、間違ったデータが下流に流れるのを防げます。

相手先のシステムが古いCSVしか出せない場合

「Shift_JISでしか出せない」「ヘッダー行が2行ある」「末尾に合計行が入る」——よくあります。

そのときは、受け取ってから整えるステップを1つ挟むのが定石です。

  1. 元のCSVは触らずに保管する(後で「元はどうだったか」を確認できるように)
  2. 整えたものを別名で保存する(文字コード変換、余分な行の削除、型の指定)
  3. 以降の処理は、整えたほうだけを見る

元データを直接いじらない。これは自動化全般の原則で、事故ったときに戻れるようにするためです。

突き合わせが合わないときのチェック順

前ゼロ以外にも、突き合わせが失敗する原因は決まっています。上から見てください。

症状原因
全部一致しない文字コード違い、または列がずれている
一部だけ一致しない前ゼロ、全角半角、スペース混入
見た目は同じなのに一致しない末尾に半角スペース、または改行が混ざっている
数値が微妙に違う小数の丸め、指数表記への変換

3行目が曲者です。目で見ても分かりません。疑ったら、LEN() で文字数を比べると一発で分かります。TRIM() で前後の空白を落とすのが定番の対処です。

まとめ

  • 文字化けは文字コードの取り違え、前ゼロ消失や日付変換はExcelの型推測。どちらも仕様
  • ダブルクリックで開かない。[データ]→[テキストまたはCSVから]で文字コードと型を指定する
  • コードっぽいものは全部テキストにする
  • 自分で出すなら BOM付きUTF-8。型を守りたいなら .xlsx で渡す
  • 自動化に組むなら、件数・空欄・不一致件数を取り込み直後に確認する
  • 元データは触らない。整えたものを別名で作る
  • 突き合わせが合わないときは、末尾のスペースを疑う(LEN() で分かります)

このあたりは、Excelの転記作業を自動化する前に の「入力元の表の形を先に固定する」と同じ話です。受け取る形が安定していないと、その先は何を作っても壊れます。

実際のCSVを見せてもらえれば、どこで壊れているかはすぐ分かります。

この記事で使うシートを配っています

XLSX

業務棚卸しシート

「どの業務から手をつけるか」を決めるためのシートです。作業を書き出して時間・回数・重要度・判断の有無を埋めると、優先度が自動で並びます。実際の打ち合わせで使っているものをそのまま置いています。

ダウンロード(無料・登録不要)

Excel(.xlsx) / 15 KB ※社内での利用・改変・配布は自由/転載・再配布・販売は不可

読んだうえで「うちの場合はどうか」を話したい方へ

OKD SOFT は、生成AI(Microsoft 365 Copilot / Copilot Studio)と Power Platform を使った業務改善・内製化支援をしています。作って渡して終わりにせず、担当の方が自分で直せる状態までご一緒します。

「何から手をつければいいか分からない」の段階でも大丈夫です。まずは現状をうかがうところから。