CSV を Excel で開くと文字化けする・数字が日付や別の値になる
このガイドは TableHarvest を作っている Quillfold が公開しています。
Web の表を CSV で書き出して、ファイルをダブルクリックしたら Excel の表示がおかしい。ここには別々の 2 つの問題があり、直し方も違います。
- 文字化け: 日本語が記号の羅列になる。たとえば UTF-8 で書かれた「こんにちは」を Shift_JIS として読むと「縺薙s縺ォ縺。縺ッ」になります。文字コード(エンコーディング)の問題です。
- 値が変わる: 商品コードの「00123」が「123」になる、20 桁の番号が「1.23457E+19」になる、「JAN1」が日付になる。Excel が「数値や日付らしい」と判断した値を変換しているためです。
どちらも、CSV が「ただの文字の並び」で、各列が何なのかという情報を持っていないことから起きます。Excel は推測するしかありません。
文字化け:文字コード
CSV ファイルは文字をバイトの並びとして保存しています。「東」や「ü」を正しく表示するには、どの文字コードで書かれているかを Excel が知る必要があります。Web のデータのほとんどは UTF-8 です。UTF-8 のファイルは、先頭に「このファイルは UTF-8 です」という印の 3 バイトを付けられます。これを BOM(バイト オーダー マーク)と呼びます。
Microsoft のサポート記事「Excel で CSV UTF-8 ファイルを正しく開くには」(2026年10月7日に確認)には、次のように書かれています。「UTF-8 でエンコードされた CSV ファイルは、BOM (バイト オーダー マーク) で保存されている場合、通常どおり開くことができます。」BOM がない場合は、「データ」タブからテキスト/CSV として取り込む方法(英語版の表記では Data > Get Data > From File > From Text/CSV)か、従来のテキスト ファイル ウィザードで開くよう案内しています。
つまり直し方は 2 つです。
- ファイルを作る側: CSV を「BOM 付きの UTF-8」で保存します。書き出す道具に BOM の設定があれば、オンにします。
- 人からもらったファイルを開く側: ダブルクリックで開かず、「データ」タブからテキスト/CSV として取り込みます。
値が変わる:Excel の自動変換
Microsoft のサポート記事「Import or export text (.txt or .csv) files」(英語、2026年10月7日に確認)には「When Excel opens a .csv file, it uses the current default data format settings to interpret how to import each column of data.」とあります。CSV を開くと、Excel は既定の設定に従って各列の値を解釈します。
Microsoft 365 と Excel 2024(Windows・Mac)では、このうち 4 種類の変換をオフにできます。Microsoft のページ「自動データ変換を設定する」に載っている例は次のとおりです。
| 設定 | Microsoft のページにある例 |
|---|---|
| 数値テキストから先頭のゼロを削除して数値に変換する | 「00123」→「123」 |
| 数値データを 15 桁の精度に切り詰め、指数表記で表示される数値に変換します | 「12345678901234567890」→「1.23457E+19」 |
| 文字 “E” を囲む数値データを指数形式に変換する | 「123E5」→「1.23E+07」 |
| 連続した文字と数字の文字列を日付に変換します | 「JAN1」→「1月1日」 |
場所は次のとおりです。
- Windows: 「ファイル」→「オプション」→「データ」→「自動データ変換」
- Mac: 「Excel」→「環境設定」→「編集」→「自動データ変換」
Microsoft 365 Insider のブログによると、この設定が入ったのは Windows のバージョン 2309(ビルド 16808.10000)、Mac のバージョン 16.77(ビルド 23091003)以降です。「自動データ変換を設定する」のページは、変換が起きる場面として、.csv や .txt ファイルを開くとき、入力するとき、外部からコピーして貼り付けるときなどを挙げています。Web の表をコピーして Excel に貼り付けたときも、CSV を開いたときと同じ変換を受けるということです。
「1-2」「3/4」のような値が日付になる動きについては、Microsoft のこのページには例として載っておらず、4 つの設定のどれで止められるかも書かれていません(2026年10月7日確認)。こうした値を守りたいときは、次に書く XLSX で書き出すのが確実です。
また、どの設定にしても、1 シートは 1,048,576 行まで、1 セルは 32,767 文字までです(Microsoft「Excel specifications and limits」、2026年4月13日)。
「=」「+」「-」「@」で始まるセル
CSV の中の「=」「+」「-」「@」で始まるセルは、表計算ソフトに数式として扱われることがあります。データが自分の管理していない Web ページから来る場合、これは危険になりえます。OWASP はこれを「CSV Injection」(Formula Injection)と呼び、数式の始まりとなる文字として、この 4 つにタブと改行(CR)を加えています。
一般的な対策は、そうしたセルの先頭にアポストロフィ(‘)を付けて、文字として扱わせることです。
いちばん簡単な対処:Excel には CSV を使わない
XLSX ファイルは、セルごとに「これは数値」「これは文字」という種類を持っています。Excel は推測せずにそのまま開くので、文字コードの判定も値の変換も起きません。Excel で使うデータなら、できるだけ XLSX で書き出し、CSV はほかのソフトやシステム向けにとっておくのがおすすめです。
方法ごとの違い(2026年10月時点)
- コピー&ペースト: 貼り付けたデータにも Excel の自動変換がかかります(上記の Microsoft の説明)。
- Excel の「データ」タブからテキスト/CSV として取り込む: BOM のない UTF-8 の CSV を開く方法として Microsoft が案内している手順です。
- Google スプレッドシート: 数値や日付の扱いは独自のルールで、このガイドの対象外です。
- Instant Data Scraper: 掲載情報に「Excel or CSV file (XLS, XLSX, CSV)」に保存できるとあります(2026年10月7日に確認)。
- Table Capture: 掲載情報では「Download tables directly as an Excel spreadsheet or as a CSV file」が有料版の項目で、無料版の項目はクリップボードへのコピーと Google スプレッドシートへの書き出しです(2026年10月7日に確認)。
拡張機能どうしの違いと、相手のほうが向いている場合は「Instant Data Scraper と TableHarvest の違い・使い分け」にまとめています。
TableHarvest でできること
TableHarvest は私たちの拡張機能です。現在の版の初期設定は次のとおりで、自動テストで確認しています。
- 無料プランで XLSX: XLSX・CSV・TSV・JSON・Markdown・コピーのすべてを無料で使えます。
- XLSX では「はっきりした数値」だけを数値にする: 15 桁以内、先頭に 0 がない、指数表記でない、「1.000」のような区切りでない値だけを数値として書き、それ以外は「00123」も 20 桁の番号も「123E5」も「JAN1」も、ページの表示どおり文字として書きます。XLSX に数式は書きません。Excel の上限の 32,767 文字を超えるセルは「…」で切ります。
- BOM 付きの CSV: 「Excel 向け(BOM 付き)」が初期設定でオンなので、ダブルクリックで開いても UTF-8 として読まれます。
- 数式ガード: CSV・TSV・コピーでは初期設定でオンです。「=」「+」「-」「@」、タブ、改行で始まるセルの先頭にアポストロフィを付けます。「-12.5」や「+81 3 1234 5678」のような、ただの数値や電話番号はそのままにします。
- 貼り付け用のコピー: 形式が CSV か XLSX のときは、表計算ソフトに貼ると列に分かれるタブ区切りでコピーします。ただし貼り付けたデータには Excel の自動変換がかかるので、「00123」のような値を守りたいときは XLSX をダウンロードしてください。
- Pro の整形: 通貨記号や桁区切りの除去、「(1,234)」をマイナスとして、「%」を割合として、全角数字を半角として読み、本物の数値にします。日付は ISO 形式(2026-10-07)にそろえます。「05/10/2026」のように月日の順番が決められない日付は、同じ列のほかの値から順番が分からない限りそのままにします。
TableHarvest は Shift_JIS などの古い文字コードでは書き出しません。CSV は常に UTF-8 です。
これが要らない場合
- CSV がすでに手元にあって、開ければよいだけ:Excel の「データ」タブからテキスト/CSV として取り込むか、「自動データ変換」の設定で不要な変換をオフにしてください。
- データの行き先が Excel ではなく、Google スプレッドシートやデータベース、プログラム:ふつうの UTF-8 の CSV で問題ありません。
根拠
2026年10月7日に確認。
- Microsoft サポート「Excel で CSV UTF-8 ファイルを正しく開くには」
- Microsoft サポート「Import or export text (.txt or .csv) files」
- Microsoft サポート「自動データ変換を設定する」
- Microsoft 365 Insider ブログ「Control data conversions in Excel for Windows and Mac」
- Microsoft サポート「Excel specifications and limits」(2026年4月13日)
- OWASP「CSV Injection」
- Chrome ウェブストア「Instant Data Scraper」
- Chrome ウェブストア「Table Capture」