無料テキスト → CSV コンバーター

表形式テキストデータをCSV形式に変換します。区切り文字の自動検出、引用符の処理、ダウンロード前のプレビュー。

データはデバイスを離れません

CSV形式について

CSV(Comma-Separated Values、カンマ区切り値)は、表形式データを保存するためのシンプルなテキスト形式です。各行はレコードを表し、値はコンマで区切られます。CSVは、スプレッドシート、データベース、分析ツールで広くサポートされています。

なぜCSVに変換するのか?

よくある質問

ツールはどの区切り文字をサポートしていますか?

タブ、スペース、カンマ、セミコロン、パイプを自動的に検出します。1文字のカスタム区切り文字を定義することもできます。

カンマを含むフィールドを処理するには?

「カンマを含むフィールドを引用符で囲む」オプションを有効にして、それらを引用符で囲み、CSV準拠にします。

ヘッダーを含めることができますか?

はい、最初の行に列名が含まれている場合は「ヘッダー行を含める」オプションを有効にしてください。

CSVの小史:定義する仕様より古いフォーマット

CSVは誰もが使うが誰も所有しないフォーマットだ。その系譜は非公式だ。カンマ区切りの慣例に関する最も古い文書化された使用例は1972年にさかのぼる。IBM Fortran(レベルHエクステンド)がリスト指示型の入出力をサポートし、1行の値の区切りにカンマを使用していた。1970年代から1980年代を通じて、別のツールとデータを交換する必要があったあらゆるデータベース・スプレッドシート・統計パッケージ・会計アプリケーションが「ある文字で区切られた値をある別の文字で区切られた行に」という慣例を独自に考案した。仕様はなかった。統括機関もなかった。標準的な実装もなかった。あったのは、最も緩い意味でのコンセンサスだけだった。

2000年代初頭には混乱のコストを無視できなくなった。IETFはついに2005年10月にYakov Shafranovich著の仕様、RFC 4180、「Comma-Separated Values(CSV)ファイルの共通フォーマットとMIMEタイプ」を受理した。RFC 4180は短く、ほんの数ページで、大多数の人々がすでに採用していた慣行を成文化した。フィールド区切り文字としてのカンマ、カンマ・引用符・改行を含むフィールド用のオプションの囲み文字としてのダブルクォート、引用符付きフィールド内のリテラル引用符をエスケープする方法としての二重ダブルクォート("")、行末文字としてのCRLF、IANAに登録されたMIMEタイプとしてのtext/csvだ。仕様はまた、送信者が受信者に最初の行がヘッダー行かどうかを伝えられるよう、MIMEタイプのオプションのheaderパラメーターも定義した。

RFC 4180は厳格な標準ではなく情報提供を目的とした文書だ。準拠は任意だ。しかしCSVが「正しい」とはどういうことかに最も近い目標を与えてくれる。後発の文書であるW3Cの「ウェブ上の表形式データとメタデータのモデル」(CSVW、2015年)は、各列が何であるかと解釈方法を記述するJSONサイドカーを付けることでCSVのメタデータ記述を拡張しようとした。CSVWは広く引用されるが、ほとんど実装されていない。

「CSV」の実世界での意味はRFC 4180が定義する意味とは異なる

見知らぬ相手からCSVを受け取ったことがある人なら、問題の構造を知っている。意見の相違はいくつかの軸に沿って分類できる:

BOMの罠

これは独立したセクションに値する。クロスプラットフォームのCSV問題の最も一般的な原因だからだ。Microsoft ExcelはファイルがUTF-8バイト順マークで始まらない限りUTF-8エンコードのCSVを自動検出しない。バイト順マークはUnicode文字U+FEFFをエンコードする3バイトEF BB BFだ。BOMがないとExcelはユーザーのWindowsロケールのレガシーコードページ(西洋圏ではWindows-1252、日本ではShift_JIS、中国本土ではGBK)でファイルを開く。非ASCII文字(アクセント付き文字・通貨記号・絵文字・CJK文字)はすべて文字化けする。

解決策はBOMを先頭に付加することだ。しかしそのコストは他のすべてがそれで詰まることだ。Apple Numbers(最近のバージョン以前)は最初のセルにBOMをリテラル文字として表示する。多くのコマンドラインツール(awkcut、古いsed)はBOMを最初のフィールドの一部として扱うため、nameと読まれるべきヘッダーがnameと読まれる。ほとんどのJavaScript製CSVパーサーはBOMを取り除くが、多くの古いPythonのcsvモジュールのワークフローはそうしない(utf-8-sigコーデックでファイルを開く必要がある)。無料のオンラインツールはユーザーがどこでファイルを開くかを知る方法がないため、BOMを省略しExcelユーザーにはData → From Text/CSVでのインポートを案内することが(常にUTF-8を明示的に選択できる)合理的なデフォルトだ。

Excelが出荷する少なくとも4種類の「CSV」フォーマット

Excelの「名前を付けて保存」ダイアログには複数のCSVバリアントがあり、その違いは重要だ:

ユーザー向けのラベルは4つの異なる方法で「CSV」と表記する。実際のファイルの内容は本質的に異なる。これがコンバーターが動作する実際の現実だ。

テキスト → CSV変換の具体的な用途

多くのオンライン「CSVツール」は逆方向で動作する。CSVを受け取り、他のもの(JSON・HTMLテーブル・SQL INSERT文・印刷可能なPDF)を出力する。このツールは逆だ。雑然としたテキストを受け取り、きれいなCSVを生成する。以下のユースケースに対応する:

Excelはデータを書き換えることがある。時にはサイレントに

注意深いユーザーでも引っかかるCSVの地雷がいくつかある:

このツールのCSVの現代的代替フォーマットの中での位置づけ

CSVが生き残っているのはテキストであり人間が読めるからだ。本格的なデータ交換では、特定の次元でCSVのシェアを奪ったフォーマットがいくつかある:

開発者とオフィスワーカーを対象とした無料のオンラインコンバーターにとって、CSVはデータインポートのリンガフランカであるためなお正しい出力フォーマットだ。現代的な代替フォーマットは存在するが、受信トレイでCSVに取って代わってはいない。

さらなる質問

出力にUTF-8 BOMを追加すべきですか?

WindowsでのダブルクリックによるExcel用途ならyes。BOMがないとExcelはレガシーコードページで開き、非ASCII文字が文字化けする。他の用途(Apple Numbers・コマンドラインスクリプト・Webアップロードフォーム)なら省略する。最も安全なのはBOMを省略し、ExcelユーザーにData → From Text/CSVでのインポートを案内することだ(UTF-8を明示的に選択できる)。

ExcelでCSVが1行1セルで開くのはなぜですか?

ほぼ常に区切り文字の不一致だ。Excelがセミコロンを期待するロケール(ヨーロッパ大陸のほとんど)なのにファイルはカンマを使っている(またはその逆)。ダブルクリックではなくData → From Text/CSVで開く。ウィザードで区切り文字を明示的に選択できる。またはローカルの区切り文字に合ったバリアントでExcelの名前を付けて保存メニューからファイルを保存する。

TSVとCSVの違いは何ですか?

TSVはカンマの代わりにタブ文字を区切り文字として使用し、独自のMIMEタイプtext/tab-separated-valuesとIANA登録を持つ。TSVの利点は実世界のデータにリテラルのタブが含まれることはほとんどないためクォートが不要なこと。欠点はタブがテキストエディターで不可視であり、コピーペーストの動作が異なること。CSVのクォートの仕組みは区切り文字を含むフィールドを安全に処理するが、TSVはほとんど問題そのものを回避する。

ファイルを共有する前に実行できるCSVリンターはありますか?

コマンドライン用途ならcsvkitcsvcleanが列数が間違っている行を報告する。Frictionless Dataのfrictionless CLIはオプションのスキーマに対して検証する。ブラウザベースの作業にはPapaParseが行ごとのパースエラーを報告する。RFC 4180への厳格な準拠(CRLF改行・ダブルクォートエスケープ)の検証は実際にはまれで、ほとんどのパーサーは一般的なバリアントのいずれも受け入れる。

関連ツール