mygems

CSVとXLSXの違い:どちらをいつ使うべきか

CSVはカンマ区切りのテキスト、XLSXは圧縮されたアプリ用ファイル。この違いが、サイズ、数式、日付、開ける人を決めます。

執筆: uos ·

一文で言えば、CSVはカンマ区切りのテキストファイルで、XLSXは表計算ソフトにしか読めないXMLをZIPで固めたものです。 実際の違いのほとんどは、ここから説明がつきます。

本当に知りたいのは「どちらが優れているか」ではありません。「このファイルを誰に渡すのか、そして途中で何が失われずに済むのか」です。

結論を先に

  • プログラムにデータを渡す(インポート、API、スクリプト、データベース):CSV。
  • 人に書類として渡す(書式、数式、複数シート):XLSX。
  • ファイルが大きい(目安は100MB超、または50万行超):CSV。
  • 値を入れたとおりに戻したい(郵便番号、商品コード、電話番号、長いID):CSV。ただし、その旨を必ず伝えてください。値を壊すのは受け取る側の表計算ソフトだからです。

それぞれの正体

CSVは、1行が1レコードで、値をカンマで区切り、カンマを含む値は引用符で囲みます。テキストエディタで読めますし、echoでも書けます。仕様としてはRFC 4180がありますが、その一部は無視するのが暗黙の了解になっています。国によって区切り文字が違うのも、壊れたCSVが独立したテーマになるのもそのためです。

保存されるのは値だけです。型も、書式も、数式も、色も、2枚目のシートもありません。007と入力されたセルと数値の7のセルは、書き出した時点で区別がつきません。どちらも2つのカンマの間にある文字でしかなく、その後どうなるかは読み込む側に完全に左右されます。

XLSXはZIPアーカイブです。拡張子を.zipに変えて展開すると、XMLのフォルダが現れます。ワークシートごとに1ファイル、共有文字列テーブル、スタイルテーブル、リレーションシップのファイルなどです。表計算ソフトが扱うものはすべて保存されます。セルの型、表示形式、数式とそのキャッシュされた計算結果、グラフ、条件付き書式、ウィンドウ枠の固定、.xlsmならマクロも含まれます。

並べて比較

CSVXLSX
ファイルの種類プレーンテキスト圧縮されたXMLアーカイブ
行数の上限なし1シートあたり1,048,576行
列数の上限なし16,384列
複数シート不可可
数式不可可
書式、グラフ不可可
データ型なし(すべてテキスト)セルごとに明示
サイズ(100万行 × 10列)約150MB約40MB
テキストエディタで開ける開ける開けない
20年後も読めるかほぼ確実おそらく
gitでの差分きれいに出るまったく見られない

この表のうち2行は補足が必要です。

サイズと、答えが逆転する理由

XLSXは圧縮されるので、同じデータならディスク上では小さくなるのが普通で、3〜4倍小さいことも珍しくありません。そのため大きなデータにCSVは不向きに見えますが、実際は逆です。

大きなファイルで重要なのは、ディスク上のサイズではなく、開くときに何が起きるかです。XLSXは、1行目が見えるようになる前に、解凍してオブジェクトモデルへ解析する必要があり、全体がメモリに載ります。CSVは1行ずつ読めるので、メモリに収まらない5GBのファイルでもストリーミングで処理できます。「このファイルをDuckDBで処理する」という解説がどれもCSVから始まるのは、このためです。上の行数の上限が効いてくるのも同じ理由で、300万行のエクスポートは、サイズに関係なく1シートのXLSXにはなりえません。

型と、データを食いつぶす往復

実際に手間を増やすのは、この違いです。

CSVには型がないので、表計算ソフトはインポート時に推測するしかありません。その推測は一貫していて、しかも一貫して次の4通りに間違います。

  • 01234が1234になる:郵便番号の先頭のゼロが消えます。
  • 4019283746501928が4.01928E+15になる:IDが指数表記になり、下の桁は隠れたのではなく失われます。
  • 3/4/2026が、ロケールによって3月4日にも4月3日にもなる。
  • MAR1、SEPT2、DEC5が日付になる。このせいで、2020年には遺伝子研究者がヒトの遺伝子27個の名前を変更しました。

CSVをExcelで開いてCSVとして保存し直すと、これらの変更はファイルに恒久的に残ります。CSVがデータを失ったのではありません。開いた表計算ソフトが失わせたのです。 だからこそ、CSVは表計算ドキュメントとしてではなく、CSVとして読むツールで読む意味があります。

CSV File Viewer - Smart CSViPhone・iPad · Android

ファイルをインポートせず、CSVとして読み込みます。型の自動変換も、ロケールによる日付の推測もありません。書かれたままの値に対して、SQLや普通の言葉で質問できます。

できること

状況別の選び方

CSVを使う場合:

  • 相手が自動化されたもの(データベースへのインポート、スクリプト、API)である。
  • ファイルが大きい、または増え続ける。
  • データをバイト単位で正確に往復させたい。
  • バージョン管理に入れて、変更点を確認したい。
  • ソフトウェアの前提なしに、10年後も読めるようにしたい。

XLSXを使う場合:

  • 人が開き、レイアウトも伝える内容の一部である。
  • 数式を生かしたままにしたい。
  • データが本当に複数シートで構成されている。
  • セルの型が重要で、何で開かれるかをこちらで制御できない。これがXLSXを選ぶ正直な理由です。受け取る側が間違えようのない型を持てます。
  • グラフ、フィルター、条件付き書式をファイル内に持たせたい。

どちらも使わない場合:データが表計算ソフトの手に余る大きさで、何度も問い合わせる場合です。これはParquetやデータベースの出番です。Parquetは列指向で、型があり、圧縮されており、DuckDBもpandasもそのまま読めます。

よくある誤解

「CSVはExcelの形式だ」:違います。Excelはただ開けるだけで、そのせいで上のような型の変換が起きます。CSVはExcelより20年ほど古い形式です。

「XLSとXLSXは同じもの」:XLSは2007年より前のバイナリ形式で、古いシステムから今も出てきます。XLSXはOOXMLによる後継です。.xlsを渡されたら変換してください。最近のExcelでも警告付きで開き、完全に拒否するツールもあります。

「XLSXは本物の形式だから安全だ」:XLSXにはマクロ、外部リンク、DDEペイロードを含められます。CSVは動かないテキストですが、数式インジェクションだけは別で、=、+、-、@で始まる値は、開いた表計算ソフトに実行されます。どちらも注意が必要で、向きが違うだけです。

「変換しても何も失われない」:XLSXからCSVにすると、すべての数式(最後に計算された値は残ります)、2枚目以降のシート、書式がなくなります。CSVからXLSXにすると、データにはなかった型が付き、そこで値が壊れます。スマホでCSVをExcelに変換するでは、壊さずに行う方法を紹介しています。

身につけたい習慣は一つだけ

コード、ID、日付を含むCSVを送るときは、メッセージにひと言添えてください。「インポート機能で開いて、ID列を文字列に設定してください」。メール2行で、オフィス業務で最も多いデータ品質の事故を防げます。形式の選び方だけでは防げません。

よくある質問

CSVとXLSXはどちらが良いですか?
どちらが良いとは一概に言えません。答える問いが違います。CSVはプログラムにデータを渡すための形式で、プレーンテキストであり、行数の上限がなく、ストリーミングで読め、往復しても変わりません。XLSXは人に書類を渡すための形式で、数式、書式、複数シート、明示的なセルの型を持てます。
CSVを開くと、Excelが数字を変えてしまうのはなぜですか?
CSVには型が保存されていないため、Excelが推測するからです。郵便番号の先頭のゼロは削除され、15桁を超えるIDは指数表記になって下の桁が完全に失われ、MAR1のような文字列は日付になります。そのままCSVとして保存し直すと、これらの変更がファイルに残ります。
XLSXはCSVより小さいですか?
ディスク上では、たいていそうです。XLSXは圧縮アーカイブなので、同じデータなら3〜4倍小さいこともよくあります。ただし、何かが見えるようになる前に、全体を解凍してメモリへ解析する必要があります。CSVは1行ずつストリーミングできるため、XLSXよりはるかに大きなファイルを扱えます。
XLSXファイルには何行まで入りますか?
1ワークシートあたり1,048,576行、16,384列です。メモリの制限ではなく、形式そのものの上限です。CSVには行数の上限がまったくないため、数百万行のエクスポートはほぼ必ずCSVになります。
CSVをXLSXに変換すると、何か失われますか?
データそのものは失われませんが、変換時にCSVにはなかった型が割り当てられ、そこで郵便番号や長いIDが壊れます。逆方向のほうが目に見える損失は大きく、XLSXからCSVにすると数式は消えて最後に計算された値だけが残り、1枚を除くすべてのシートと書式も捨てられます。
XLSとXLSXの違いは何ですか?
XLSは2007年より前のバイナリ形式のExcelファイルで、XLSXはそれに代わったOffice Open XML形式、つまりXMLファイルのZIPアーカイブです。XLSファイルは古いシステムから今も届くため、変換しておくのがお勧めです。最近のツールには、警告付きでしか開けないものや、まったく開けないものがあります。

uos — CSV EditorとSmart CSV Viewerを開発。どちらも、表計算ソフトが苦手な部分を扱うアプリです。