CSV とは
CSV は、表のデータを、値をカンマで区切った文字だけで表すファイルの形式です。ほとんどのツールで読み書きできるので、データを書き出したり、別のツールへ移したりするときによく使われます。
この記事でわかること
- CSV がどんな形のファイルかを説明できる
- 文字化けや、先頭のゼロ・日付が変わってしまう理由と防ぎ方がわかる
- Excel のファイルとの違いと、CSV を安全に扱うための注意点を知る
目次
CSV(シーエスブイ)は、表のデータを、値をカンマ(,)で区切った文字だけで表すファイルの形式です。Comma-Separated Values の略で、1 行が表の 1 行、カンマで区切られた 1 つ 1 つが表のマス目にあたります。
文字だけでできているので、表計算ソフト、データベース、Web のサービスなど、ほとんどのツールで読み書きできます。教室の申し込みフォームに届いた回答を書き出して名簿にする、オンライン講座の受講者の一覧を別のツールへ移す、といったときによく使います。形がかんたんなぶん、開き方によっては文字化けしたり、数字が変わったりします。しくみを知っておくと、こうした崩れを防げます。
- 回答が届く教室の申し込みフォーム
- CSV に書き出す1 行に 1 件、カンマで区切る
- 取り込みで開く文字コードと列の形を選ぶ
- 表で使う名簿づくりや集計に
CSV はどんな形をしているのか
たとえば、教室の申し込みを CSV にすると、次のような行が並びます。
- 1 行目:
名前,メールアドレス,コース - 2 行目:
山田 花子,hanako@example.com,水彩画の入門 - 3 行目:
佐藤 健,ken@example.com,油絵の基礎
表計算ソフトで開くと、次のように見えます。
| 名前 | メールアドレス | コース |
|---|---|---|
| 山田 花子 | hanako@example.com | 水彩画の入門 |
| 佐藤 健 | ken@example.com | 油絵の基礎 |
1 行が 1 件のデータ(レコード)、カンマで区切られた位置が列です。1 行目には、列の名前を並べた見出しの行(ヘッダー)を置くことがよくあります。どの行も、列の数をそろえます。
CSV の決まりを文書にまとめたものに、RFC 4180(2005 年)があります。ただ、これは多くのツールが従っている形を書き留めたもので、厳密な標準ではありません。そのため、細かいところはツールごとに少しずつ違います。
値にカンマや改行が入るときは
値そのものにカンマが入っていると、どこで区切ればよいかわからなくなります。そこで、カンマ・改行・二重引用符(“)を含む値は、二重引用符で囲みます。
- カンマを含む値:
"月曜, 水曜"(1 つの値として読まれる) - 二重引用符を含む値:
"""はじめて""の方"(中の “ は “” と 2 つ重ねる) - 改行を含む値: 二重引用符で囲めば、複数行の答えも 1 つの値として入れられる
この決まりを知らずに、カンマの位置だけで切り分けるプログラムを書くと、列がずれます。CSV を読むときは、表計算ソフトの取り込みの機能や、プログラミング言語に用意された CSV を読む部品を使います。
なお、小数点にカンマを使う国では、区切りにセミコロン(;)を使う CSV もあります。タブで区切った形は TSV と呼ばれます。
文字化けはなぜ起きるのか
CSV には、どの文字コード(文字を数字に置き換える決まり)で書いたかの情報が入っていません。開くソフトは、文字コードを推測して読むしかなく、推測が外れると日本語が文字化けします。
日本語の CSV でよく出てくる文字コードは、次の 2 つです。
| 文字コード | 特徴 |
|---|---|
| UTF-8 | 世界の文字をまとめて扱える。いまの Web やサービスで広く使われている |
| Shift_JIS(シフトジス) | 日本語用の古くからの文字コード。昔からの業務のシステムやソフトで使われていることがある |
UTF-8 のファイルには、先頭に BOM(バイトオーダーマーク)という目に見えない印を付けることがあります。Microsoft の説明では、Excel は、BOM 付きで保存された UTF-8 の CSV ならそのまま正しく開けます。BOM がないときは、ファイルをダブルクリックで開くのではなく、「データ」のタブにあるテキストや CSV の取り込みの機能を使い、元の文字コードを選んで読み込みます(Microsoft の説明)。
反対に、BOM を付けると困るツールもあります。BOM を知らないプログラムは、それを 1 列目の見出しの一部として読んでしまうことがあります。CSV を別のツールに渡すときは、相手がどの文字コードと BOM の有無を求めているかを、先に確かめます。
先頭のゼロや日付が変わるのはなぜか
CSV のマス目には、「これは数」「これは日付」という情報がありません。表計算ソフトは、開くときに値の見た目から種類を推測し、自動で変換します。そのため、次のようなことが起きます。
- 電話番号の
09012345678が9012345678になる(先頭のゼロが消える) - 郵便番号の
0600001が600001になる - 16 桁以上の会員番号などが指数の形(1.23E+15 など)で表示され、16 桁目からが 0 に変わる
12/2や3-1のような値が、日付に変わる
Excel が扱える数の精度は 15 桁までなので、長い番号は数として読むと元に戻せません。こうした値は、数ではなく文字として読み込みます。
- 取り込みの機能で開き、電話番号・郵便番号・番号の列を「文字列(テキスト)」の形にしてから読み込む
- Microsoft 365 などの新しい Excel では、オプションの「自動データ変換」で、先頭のゼロを消す・日付に変えるといった変換を止められる
- 開いたあとに上書き保存すると、変わった値のまま CSV に残るので、元のファイルは別に残しておく
日付は、03/04/2026 のような書き方だと、国によって 3 月 4 日とも 4 月 3 日とも読めます。データとして受け渡すときは、2026-10-12 のように年・月・日の順で書く形(国際規格の ISO 8601 の形)にしておくと、取り違えを防げます。
CSV と Excel のファイルはどう違うのか
Excel のブック(.xlsx)は、値だけでなく、数式・書式・グラフ・複数のシートをまとめて持てるファイルです。CSV は、1 つの表の値を文字で並べただけのファイルです。
| CSV(.csv) | Excel のブック(.xlsx) | |
|---|---|---|
| 中身 | 値を文字で並べただけ | 値・数式・書式・グラフなど |
| シート | 1 つの表だけ | 複数のシートを持てる |
| 値の種類 | 持たない(開く側が推測する) | 数・日付・文字を区別して持つ |
| 開けるソフト | テキストエディターを含むほとんどのツール | 表計算ソフト |
ツールからツールへデータを移すときは、どこでも読める CSV が向いています。人が見て整える表や、数式を使った集計を残すときは、Excel などのファイルが向いています。Excel で CSV として保存すると、保存されるのは開いているシートだけです。数式は計算した結果の値になり、書式は残りません。
CSV を安全に扱うには
CSV インジェクションとは
表計算ソフトは、= で始まるマス目を数式として扱います。OWASP(Web のセキュリティの情報をまとめている団体)は、+・-・@ やタブなどで始まる値も数式として扱われることがあると説明しています。フォームのように誰でも入力できるところに、数式のような文字を入れておき、書き出した CSV を開いた人の表計算ソフトで動かそうとするのが、CSV インジェクション(数式インジェクション)です。外のサイトへデータを送る数式や、まぎらわしいリンクが仕込まれることがあります。
表計算ソフトは、外のデータを読み込むような動きの前に、警告を出すことがあります。落ち着いて、次のことを守れば防ぎやすくなります。
- 誰でも入力できるフォームから書き出した CSV を開いて警告が出たら、理由がわからないうちは「有効にする」を押さない
- 見覚えのないリンクや数式が入ったマス目は、押さずに中身を確かめる
- CSV を作る側では、数式の記号で始まる文字の値の先頭に
'を付けるなどして、数式として動かないようにする(OWASP の説明)
個人情報が入ったファイルの扱い
申し込みの名簿のように、名前やメールアドレスが入った CSV は、それ自体に鍵がかかっていない文字のファイルです。メールに添付して何人にも回すのではなく、見る必要のある人だけが開ける場所に置きます。見られる人を必要な範囲に絞る考え方は「最小権限とは」で説明しています。使い終わったファイルは、パソコンのダウンロードのフォルダーなどに残さず消します。
まとめ
- CSV は、1 行が 1 件、カンマで区切った位置が列になる、文字だけの表のファイルです
- カンマ・改行・二重引用符を含む値は、二重引用符で囲みます
- 文字化けは文字コードの読み違いで起きます。BOM の有無と、取り込みの機能での文字コードの選び方を押さえます
- 電話番号や郵便番号は、文字列として読み込むと先頭のゼロが消えません
- 誰でも入力できるところから書き出した CSV は、数式やリンクに気を付けて開きます
mukumo ではフォームの回答を CSV に書き出せますか
mukumo(ムクモ)のフォーム作成では、「CSV に書き出す」で、届いたすべての回答を、表計算ソフトで開ける形で保存できます。申し込みの名簿を作る、アンケートを集計する、といった作業に使えます。
回答が届くたびに別のツールへ送りたいときは、フォームの設定の「Webhook」に https の送り先 URL を入れると、回答を JSON で送ります。使ったクレジットの履歴も、設定の「使用状況と履歴」から CSV でダウンロードできます。
よくある質問
CSV ファイルは何のソフトで開けますか
中身は文字だけなので、Excel や Google スプレッドシート、Numbers などの表計算ソフトのほか、メモ帳のようなテキストエディターでも開けます。中身をそのまま確かめたいときは、テキストエディターで開くと、区切りや引用符の様子がわかります。
CSV と TSV は何が違いますか
値の区切りが違います。CSV はカンマで、TSV(Tab-Separated Values)はタブで区切ります。値の中にカンマが多いデータでは、TSV のほうが引用符で囲む手間が減ることがあります。
CSV に書き出したファイルを Excel で編集して、そのまま CSV で保存してもよいですか
保存はできますが、開いたときに先頭のゼロや日付が変わっていると、変わったまま保存されます。シートが 1 つだけになり、書式や数式も残りません。元のファイルは別に残しておくと安心です。
CSV ファイルにパスワードをかけられますか
CSV は文字だけの形式なので、ファイルそのものにパスワードをかける仕組みはありません。個人情報が入ったファイルは、見られる人を絞った場所に置き、使い終わったら消すようにします。