CSV行・列抽出|指定した行番号・列番号だけを抽出

CSV・表データツール
抽出対象

1始まりで指定します。例:1,3,5-7

CSVと抽出する行番号を入力してください。

このツールでできること

CSVをレコードとセルへ解析し、1始まりで指定した行または列だけを抽出します。引用符内のカンマや改行にも対応し、番号を入力した順序ではなく元CSVの行順・列順を保った結果を作成します。

使い方

  1. CSVを入力欄へ貼り付けます。
  2. 「行を抽出」または「列を抽出」を選びます。
  3. 抽出する番号を 1,3,5-7 のように1始まりで入力します。
  4. 「CSVから抽出」を押し、結果をコピーします。

入力、番号、抽出対象を変更すると、変更前の結果は消去されます。「クリア」を押すと入力と番号を消去し、抽出対象を「行を抽出」へ戻します。

入力例・出力例

次の5行のCSVで「行を抽出」を選び、1,3,5を指定します。

id,name,area
1,A,東京
2,B,大阪
3,C,福岡
4,D,札幌

元の1・3・5番目のレコードを、その順序で出力します。

id,name,area
2,B,大阪
4,D,札幌

次の可変列CSVで「列を抽出」を選び、3,1を指定します。

A,B,C
1,2
3,4,5

指定順へ並べ替えず、元の1列目、3列目の順で出力します。2行目にない3列目は空セルで補うため、その行の末尾はカンマになります。

A,C
1,
3,5

よくある利用場面

  • 大きいCSVから確認対象の行番号だけを抜き出すとき
  • 必要な列だけを残した簡易CSVを作るとき
  • 引用符内改行を含むCSVをレコード単位で抽出するとき

処理仕様

番号の指定

行番号はCSVのレコード、列番号は各レコード内のフィールド位置を1から数えます。先頭レコードをヘッダーとして特別扱いしないため、見出し行を行抽出の結果へ含めるには1を指定します。引用符で囲まれたセル内の実改行は同じレコードの一部であり、次の行番号として数えません。

指定は半角数字の単独番号と範囲をカンマで区切る1,3,5-7形式です。番号やハイフンの前後には半角空白を入れられます。重複指定は1回にまとめ、3,1のように入力しても、行・列とも元CSV内の小さい番号から出力します。指定順への並べ替えは行いません。

番号なし、0以下、小数や符号付きの値、末尾を含む空要素、開始番号が終了番号より大きい範囲、安全な整数として扱えない値、CSVの行数または最大列数を超える指定はエラーです。範囲外の番号だけを無視して処理を続けることはありません。

行抽出と列抽出

行抽出は選択したレコードを元の順序で残し、各レコードの列数をそのまま保持します。列数が異なる行を長方形へそろえる処理は行いません。

列抽出は入力全体の最大列数を選択可能な上限とします。選択した列が短い行に存在しない場合は、その位置を空文字セルで補います。入力に明記された空セルと補った空セルは、出力では区別できません。

CSVの解析と出力

区切り文字は半角カンマです。LF・CRLF・CR、空セル、空レコード、引用符で囲んだカンマや実改行、""で表した引用符に対応します。引用符はセルの先頭でだけ開始でき、閉じ引用符の後にはカンマ、改行、または入力末尾だけを置けます。

先頭のBOMは1文字だけ除去します。BOMだけの入力は空入力エラーですが、引用符で表した空セルは有効な入力です。不正な引用符は物理行付近を示してエラーにし、途中までの結果は出力しません。

結果はCSVとして作り直します。カンマ、引用符、CR、LFを含むセルだけを二重引用符で囲み、内部の引用符を""へ変換します。レコード間はLFで結び、末尾に追加のレコード改行を付けません。入力のBOM、レコード改行の種類、不要な引用符の有無は保持しません。

値の前後空白、文字大小、Unicode、HTML風文字列、&などのHTMLエンティティを変更しません。バックスラッシュと英字のnからなる文字列\nも実改行へ変換しません。空セル1個だけを抽出した場合、結果欄は空に見えますが有効な結果としてコピーできます。

非常に大きな入力で利用できる量と処理速度は、端末とブラウザの性能に依存します。

入力データについて

入力したCSVは外部ライブラリを使わずブラウザ内で処理され、ToolRollのサーバーや外部サービスへ送信されません。Cookie、Web Storage、IndexedDB等へ入力、番号、結果を保存しません。「結果をコピー」を押したときだけ、表示中の結果をクリップボードへ書き込みます。