「CSVファイルを送ってください」と言われて、Excelで保存したファイルをそのまま送っていいのか迷ったことはないでしょうか。あるいは、ダウンロードしたCSVをExcelで開いたら中身が文字化けしていて困った経験があるかもしれません。
CSVとExcelは見た目がよく似ているせいで「だいたい同じもの」と思われがちですが、中身はまったくの別物です。この違いを一度理解しておくと、文字化けやデータ崩れのトラブルに慌てなくなります。
CSVの正体は「ただのテキスト」
CSVは Comma-Separated Values の略で、日本語にすると「カンマ区切りの値」。名前のとおり、データをカンマで区切って並べただけのテキストファイルです。
たとえば、こんな表があるとします。
| 名前 | 年齢 | 部署 |
|---|---|---|
| 田中 | 28 | 営業 |
| 鈴木 | 34 | 開発 |
これをCSVにすると、中身はこうなります。
名前,年齢,部署
田中,28,営業
鈴木,34,開発
これだけです。1行目が見出し(ヘッダー)、2行目以降がデータ。メモ帳で開いてもそのまま読めます。仕組みが単純だからこそ、ほぼすべてのシステムやプログラミング言語が対応していて、データの受け渡し形式として何十年も使われ続けています。
Excelファイルとの決定的な違い
一方、Excelファイル(.xlsx)はテキストではありません。実体はZIP圧縮されたXMLファイルの集合体で、セルの値だけでなく、書式・数式・色・罫線・複数シート・グラフといった情報を全部まとめて持っています。
違いを整理するとこうなります。
| 項目 | CSV | Excel (.xlsx) |
|---|---|---|
| 実体 | プレーンテキスト | 圧縮されたXML群 |
| 持てる情報 | 値のみ | 値+書式+数式+シート構成 |
| 開けるソフト | ほぼ何でも | Excel・互換ソフト |
| ファイルサイズ | 小さい | 比較的大きい |
重要なのは、CSVは「値」しか持てないという点です。Excelでセルに色を付けたり数式を入れたりしても、CSVで保存した瞬間にすべて消えます。残るのは計算結果の値だけ。「CSVで保存したら書式が全部消えた」というのは事故ではなく、CSVの仕様どおりの動きです。
なぜCSVは文字化けするのか
CSVがらみのトラブルで圧倒的に多いのが文字化けです。原因は、テキストの保存方式(文字コード)が複数存在することにあります。
日本語環境では主に2つの文字コードが使われています。
- Shift-JIS(Shift_JIS / CP932) — 古くからWindowsで使われてきた方式。日本のExcelはこれを前提に動く場面が多い
- UTF-8 — 現在の世界標準。Webサービスやプログラミング言語はほぼこちら
問題は、CSVファイル自体には「自分がどちらの文字コードで書かれているか」という情報が含まれていないことです。開く側のソフトが推測するしかなく、推測を外すと「縺ゅ>縺・∴縺翫€」のような文字化けが発生します。
Webサービスからダウンロードした(UTF-8の)CSVを日本のExcelで開くと文字化けする、というのが典型パターンです。Excelが文字コードをShift-JISだと思い込んで開いてしまうためです。
対処法はシンプルで、Excelで直接開かずに、文字コードを指定して読み込むこと。Excelの「データ」タブ →「テキストまたはCSVから」でファイルを選ぶと文字コードを指定できます。もしくは、CSVを最初からExcelファイル(.xlsx)に変換してしまえば文字コード問題自体が消えます。
CSVを扱うときの注意点
最後に、実務でCSVを触るときにハマりやすいポイントを挙げておきます。
- 先頭の0が消える — 「0123」のような値をExcelで開くと数値扱いされて「123」になります。電話番号や商品コードで頻発します
- カンマを含む値 — 「東京都,新宿区」のような値は
"東京都,新宿区"とダブルクォートで囲むのがルールです - 日付の勝手な変換 — 「1-2」のような値がExcelで「1月2日」に変換されることがあります
どれも「CSVは値だけのテキストであり、解釈は開くソフト任せ」という性質から来ています。この一点さえ頭に入れておけば、CSVのトラブルはだいたい説明がつきます。