HTMLテーブル→CSV変換

HTMLの <table> タグを含むソースを貼り付けると、CSV/TSVに変換します。他サイトの表をコピーしてスプレッドシートに取り込みたいときに便利です。thead内の見出し行を自動認識し、変換処理はすべてブラウザ内で行われサーバーには送信されません。

HTMLテーブルとCSVの行の対応

HTMLの1行 <tr><td>name</td><td>age</td><td>city</td></tr>
変換後のCSV記法 name,age,city

<thead> 内の行、または最初の行が <th> のみで構成される場合は見出し行として認識され、それ以外の各 <tr> はデータ行としてCSVの1行に変換されます。

使い方のヒント

  • <thead>/<tbody> タグが無いHTMLでも、最初の行のセルがすべて <th> であれば見出し行として自動認識します。
  • セル内の <strong><br> 等の装飾タグは自動的に取り除かれ、テキスト内容のみがCSVに変換されます。
  • ブラウザで他サイトの表を範囲選択してコピーすると、クリップボードにHTML形式のデータが含まれていることが多く、そのままこのツールに貼り付けて変換できます。
  • 姉妹ツールのCSV→HTMLテーブル変換とは逆方向の変換で、対で使うことでCSVとHTMLテーブルを行き来できます。

よくある質問

ブラウザの開発者ツール(要素を選択して右クリック→「検証」)でテーブル部分のHTMLをコピーするか、ページのソースコード表示(Ctrl+U等)から <table> タグを含む範囲をコピーして貼り付けてください。

はい。<thead> タグが無くても、最初の <tr> のセルがすべて <th> であれば見出し行として扱われます。それにも該当しない場合は、全ての行がデータ行としてそのまま変換されます。

最初に見つかった <table> タグのみが変換対象になります。複数の表を変換したい場合は、それぞれのテーブルのHTMLを個別に貼り付けて変換してください。

いいえ。変換処理はすべてブラウザ内のJavaScriptで行われ、入力したHTMLの内容がサーバーに送信されることはありません。
ツールくん

余談ですが ― ブラウザの「表コピー」はなぜHTMLを含むのか

ブラウザで表の範囲を選択してコピーすると、クリップボードには見た目上の文字列だけでなく、裏側でHTML形式のデータも同時に格納されています。これはOSのクリップボードが「マルチフォーマット」に対応しているためで、コピー元のアプリケーションが複数の表現形式(プレーンテキスト・HTML・リッチテキスト等)を同時に書き込み、貼り付け先のアプリケーションが最も都合の良い形式を選んで受け取れる仕組みになっています。

Excelやスプレッドシートに他サイトの表をそのまま貼り付けると、書式やリンクまで含めて再現されることがあるのはこの仕組みのおかげです。一方で、貼り付け先が単純なテキストエディタやCSVファイルの場合、この裏側のHTML情報は活用されずプレーンテキストとして扱われてしまい、表組みの構造(どのセルがどの列に属するか)が失われがちでした。

HTMLテーブル→CSV変換のようなツールは、まさにこの「失われがちな構造情報」を明示的に復元する役割を担っています。ブラウザの表コピー機能が持つHTML構造をそのまま活かし、スプレッドシートで正しく列分けされたデータとして再利用できるようにする、実務上地味だが確実に需要のあるジャンルです。