CSV転置ツール(行・列入れ替え)

CSVデータの縦方向(行)と横方向(列)をプレビュー表示しながら反転させ,再出力します. ピボット集計などの意味変換は行わず,値を文字列のまま維持して単純に配置を入れ替えます.

読み込み中...

入力データの記述例

項目,4月,5月
売上,120,135
件数,8,9

処理後の出力結果例

項目,売上,件数
4月,120,8
5月,135,9

よく発生する構文エラー・記述ミス

  • •入力データと画面で選んだ区切り文字が一致していない.
  • •引用符が閉じられていない,値の途中にある,または閉じ引用符の後に不正な文字がある.
  • •文字数・レコード数・列数・空セル補完後のセル数・出力文字数の上限を超えている.

対応規格・動作仕様

CSV(カンマ区切り)TSV(実タブ区切り)セミコロン区切りテキスト単純な行・列の転置

関連する技術解説・ブログ記事

ZeroToolsのブラウザ内処理と,外部通信を利用する機能の違いやデータの取り扱いについて.

記事を読む

ZeroToolsのブラウザ内処理とプライバシー

ZeroToolsは,入力内容を端末内で処理するツールを中心に提供しています.各ツールの対応範囲と制限を確認して利用してください.

データの取り扱い・プライバシー方針
第1章

CSV転置の意味と入出力の組み合わせ

本ツールにおける「転置」とは,表形式データの縦方向(行)と横方向(列)を単純に入れ替える操作を指します.元のデータがR行×C列の構成であれば,転置後はC行×R列の構造へ変わります.操作方法としては,テキストエリアへの直接貼付け,単一ファイルの読込み,動作確認用サンプルの展開という3種類を用意しています.

データの区切り文字は,カンマ,実タブ,セミコロンの3種類に対応し,入力と出力でそれぞれ独立して選択できます.「カンマ区切りのCSVを入力してタブ区切りのTSVとして出力する」「セミコロン区切りテキストを入力してCSVとして出力する」といった合計9通りの組合せを選べます.内容を見て区切りを推測する機能ではないため,入力に実際に使われている区切り文字を画面で選ぶ必要があります.

本ツールには,ブラウザ上で一括処理するための製品固有の上限があります.入力テキストは2,000,000文字,ファイルは2 MiB,レコード数は50,000件,列数は200列までです.さらに,不揃い行を空セルで補完した後の総セル数は1,000,000件,出力文字列は5,000,000文字までです.

いずれかを超える場合は結果を残さず処理を止め,画面に上限超過を表示します.これらはCSV形式やブラウザ全般に共通する限界ではなく,本ツールで定めた値です.

転置では,各セルを文字列として新しい座標へ移します.数値や日付への型推定,計算,並べ替え,ヘッダーの特別扱いは行いません.例えば「項目,4月,5月」「売上,120,135」「件数,8,9」という3行×3列を転置すると,先頭行は「項目,売上,件数」,続く行は「4月,120,8」「5月,135,9」になります.値の意味を解釈せず,位置だけを交換する点が基本です.

第2章

引用符や改行の構文解析とエラー処理

入力テキストは,選択されたカンマ,実タブ,セミコロンのいずれか1文字を基準に厳格に解析します.先頭にUTF-8 BOM(U+FEFF)由来の文字が存在する場合は最初の1つを確実に除去します.引用符で囲まれていないフィールドを含め,セル前後の空白やタブなどの空白文字は削除せず,そのままデータ値として保持します.

自動的なトリミングは一切行いません.文字数や出力カウントはUnicodeコードポイントではなくJavaScriptのUTF-16コード単位で計量されます.意図して入力された空白文字を損失なく保持することが解析の原則です.

セルを二重引用符で囲むと,その内部に存在する区切り文字や改行(CRLF,LF,CR)を区切りと見なさず,単一のセル値として扱えます.引用セル内で二重引用符そのものを表現する連続した二重引用符("")は,単一の引用符(")へと正しく復元されます.出力時にも,選択された区切り文字,二重引用符,CRまたはLFを含むセルを二重引用符で囲み,内部の二重引用符を二重化して出力します.

カンマ区切りのCSV,タブ区切りのTSV,セミコロン区切りテキストは性質の異なる別の入力として厳密に扱い,選択された区切り規則に従って処理します.

二重引用符の構文に誤りや曖昧さがある場合は,勝手な推測や自動修復(サイレントリペア)を行わず,直ちに構文エラーとして処理を停止します.具体的には,値の途中から二重引用符が現れるケース,閉じ引用符の直後に区切り文字や改行以外の文字が続くケース,入力の終端まで引用符が閉じられないケースが厳格なエラー対象です.

エラーメッセージには該当するレコード番号を含めるため,元データ内で問題のある箇所を速やかに特定できます.構文解析や変換処理で失敗した場合には前回の出力結果を画面上から消去しますが,クリップボードへのコピーやダウンロードの失敗時は有効な出力が保持され,手動での再利用が可能です.

本ツールはRFC 4180の引用符ルールを参考設計としていますが,LFやCR単独の改行やUnicode文字も許容するため,厳密なRFC 4180仕様への完全準拠を主張するものではありません.実タブやセミコロンを選択できることも,それらがRFC 4180仕様そのものになることを意味するわけではありません.

また,文字が全く存在しないリテラルな空入力ではグリッドを生成しませんが,二重引用符で囲まれた単一の空フィールド("")は有効な1行×1列の空セルとして認識され,シリアライズ時にも二重引用符付きで保持されるため,構造上の空レコード欠落を防ぎます.元のバイト表現の保持は行わず,数式風プレフィックスの無害化も行わないため,利用先の仕様に合わせた確認が必要です.

第3章

不揃い行の補完と構造復元の制限

実際のデータでは,すべての行で列数が一致しているとは限りません.本ツールは各行の幅が異なる入力を許容し,まず全行から最大列数を求めます.列数が不足する行には末尾へ空文字を補い,長方形の表として扱ってから転置します.例えば「a」という1列の行と「b,c,d」という3列の行を転置すると,「a,b」「,c」「,d」という3行×2列の結果になります.

空の中間レコードも一つの行として保持します.一方,末尾の改行だけを理由に余分な空レコードは追加しません.この区別により,入力途中に意図して置かれた空行は転置対象にしつつ,一般的なファイル末尾の改行を新しいデータ行とは見なしません.

空セル補完には不可逆な点があります.元から存在した末尾の空セルと,本ツールが矩形化のために追加した空セルには識別情報がありません.転置後の表をもう一度転置すると,値の配置は矩形化後の表へ戻りますが,元の各行が何列で終わっていたかまでは復元できません.元行長を保持したい場合は,転置前のファイルを別に残すか,行長を示す列を利用者側で用意してください.

ここで行う転置は,データ分析でいうロング形式とワイド形式の意味的な変換ではありません.列名やキーの値から新しい行・列を組み立てるpivot,重複項目をまとめる集計,合計や平均の計算も行いません.目的は,二次元テキスト表の行番号と列番号を交換することだけです.

第4章

プレビューの表示範囲と全件出力

画面には,入力データと転置結果を比較できる表形式プレビューがあります.表示するのはそれぞれ先頭12行×12列までです.12を超える場合は,省略した行数または列数を表示します.この制限は大量のHTMLセルを画面へ並べないための表示上の措置であり,解析・転置する範囲を12×12へ縮めるものではありません.

データ統計の「オリジナルサイズ」と「転置後サイズ」は,先頭行の長さではなく全行の最大列数を使います.後続行だけが長い場合も,元のR行×最大C列と,転置後のC行×R列を確認できます.プレビューの各行も不足セルを空欄として表示するため,不揃い行がどの形へ補完されたかを見比べられます.

出力テキスト,クリップボードへ渡す文字列,保存ファイルには,プレビュー外を含む全件の転置結果を使用します.先頭12×12が意図した方向へ変わっていることを確認してから全件を取得する流れです.ただし,プレビューが正しく見えることだけで,利用先の列定義,文字コード,日付や数値の解釈まで保証されるわけではありません.重要なデータは利用先でも件数と列数を確認してください.

ヘッダー行も通常の1行として転置されます.先頭行を列名と判断したり,転置後に新しいヘッダーを自動生成したりしません.ヘッダーとデータの向きを変えたいだけの用途ではそのまま使えますが,項目名から表を再構成する場合はpivotや専用の整形機能を持つ別の手段が必要です.

第5章

ファイル読込みとコピー・保存形式

ファイル読込みは,.csv,.tsv,.txtの単一ファイルを対象として受け付けます..csvと.tsvについては拡張子の大文字小文字を問わず自動判定し,ファイル読込みが正常に完了した時点で,CSVファイルであれば入力・出力区切りをカンマに,TSVファイルであれば実タブに同期して設定します.

一方,.txtファイルの場合は現在画面で選択されている手動の区切り設定をそのまま維持します.これはファイル内容を走査して区切り記号を自動推測する機能ではありません.ファイル選択欄は読込み開始時に値をクリアするため,同一ファイル名のデータを外部エディタで修正した直後でも同じダイアログから再選択できます.

読込み処理自体の失敗やファイルサイズ2 MiB超過といったエラーが発生した際には,画面上に警告が表示されて古い変換結果が消去されます.

ファイル読込み処理には世代管理(generation management)とキャンセル機能が備わっています.ファイルの読込み中に「クリア」ボタンの押下,動作確認用サンプルの展開,別の新ファイルの再選択,区切り文字の変更,画面離脱,あるいはテキストエリアへの手入力編集が行われた場合,コールバック世代の破棄や進行中処理の中断(abort)が行われます.

これにより,遅れて完了した古い読込み結果が現在の画面や新ファイルの内容を上書きしてしまう不整合を抑制します.読込みは明示的にreadAsText(file, 'UTF-8')の引数を指定して行われ,BOMは自動デコードされますが,Shift_JIS等の文字コードを自動推測する機能はありません.

出力改行コードには一貫してLFを採用し,UTF-8 BOMは付与しません.保存時の拡張子とMIMEタイプは,カンマ出力時は.csvおよびtext/csv,タブ出力時は.tsvおよびtext/tab-separated-values,セミコロン出力時は.txtおよびtext/plainを適用し,ダウンロードファイル名には利用端末のローカル日付を組み込みます.

生成されたBlob URLはリソースの浪費を防ぐためダウンロード処理後に安全に解放(revoke)されます.これらの設定は一般的な規格に沿ったものですが,受領側の表計算ソフトが文字コードやデータ型を常に意図通りに解釈することを保証するものではありません.

クリップボードへのコピー機能はClipboard APIの非同期処理(Promise)の完了を待機し,書き込みに成功した時点ではじめて画面にチェック表示を出します.ブラウザのセキュリティ権限やサンドボックス環境によりAPIが拒否された場合は,出力を保持したままエラー表示とともにテキストエリアを選択して手動でコピーするよう案内します.

コピー成功の表示は,成功から約2秒後に自動でリセットされるほか,出力テキストが変更された際にもリセットされ,再度コピーが実行された場合にも以前の表示はリセットされます.入力が変更されても同一の出力テキストが生成される編集ではテキスト変更に伴うリセットはトリガーされませんが,約2秒の自動タイマーは引き続き適用されます.

コピーや保存が可能かどうかの判定は,単に表示上の出力文字列の有無ではなく,二重引用符による空の1セルを含む有効な転置後グリッドが存在するかどうかに基づいて判断されます.

第6章

同期一括処理の範囲と利用先での注意

入力テキストや区切り設定が変わると,現在の入力から解析,矩形化,転置,文字列化までを同期的に一括計算します.Web Workerによる別スレッド処理,ストリーム処理,ファイルのチャンク分割は使用していません.上限に近い入力では,計算中にメインスレッドを占有し,画面操作や描画が一時的に重くなる可能性があります.

12×12のプレビュー制限も,この全文処理の計算量やメモリ使用量を減らすものではありません.

変換コンポーネントでは,データ解析,転置,出力文字列の生成をブラウザ上で行います.この説明は変換処理の範囲を示すもので,ページ全体が完全オフラインであること,一切の通信経路がないこと,機密データが必ず安全であることを保証しません.入力データの機密性と利用環境の規則を確認したうえで使用してください.

転置後のデータを表計算ソフトで開く場合は,値の先頭が「=」「+」「-」「@」で始まるセルに注意が必要です.本ツールは値を文字列として保持し,自動で先頭記号を変更しませんが,利用先が数式として解釈する場合があります.数式候補の無害化機能や安全出力モードはないため,利用先のインポート設定やセル形式を確認してください.

また,本ツールは文字コード変換,型推定,日付形式の統一,数値精度の検証を行いません.出力を別システムへ渡す前に,行数・列数,空セル補完,区切り文字,文字コード,先頭ゼロ,数式候補を確認することが重要です.単純転置と区切り変換の範囲を理解して使うことで,見出しが縦に並んだ小規模な表の向き変更や,CSVとTSVの受渡し準備に活用できます.

よくある質問(FAQ)

A.
本ツールのデータ解析,転置,出力生成といった変換コンポーネントの処理は,お使いの端末のブラウザ上で実行されます.ただし,機密データの安全性やページ全体の通信状態を保証するものではありませんので,データの取り扱いは利用環境に合わせて判断してください.
A.
.csv,.tsv,.txtの単一ファイルを2 MiBまで読み込めます..csvと.tsvは大文字小文字を問わず入力・出力の区切り設定を合わせ,.txtは現在の手動設定を維持します.出力もカンマ,タブ,セミコロンから選べます.
A.
データ全体の最大列数を基準に,不足する末尾セルへ空文字を補完してから転置します.補完後は元から空だったセルと区別できないため,もう一度転置しても元の不揃いな行長までは復元できません.
A.
引用符の閉じ忘れ,フィールド途中の引用符,閉じ引用符の直後に区切り文字や改行以外の文字が存在しないかを確認してください.本ツールは不正な引用符を自動修復せず厳格にエラーとして検出します.入力テキストは200万UTF-16コード単位・ファイル2 MiB・5万レコード・200列・補完後総セル数100万件,出力文字列は500万UTF-16コード単位の上限が定められています.これらは処理規模を制限するものであり,端末のフリーズ防止を保証するものではありません.構文エラー時には該当レコード番号が表示されますが,上限超過等ではレコード番号は表示されません.構文・読込み・サイズエラー時は出力が消去されますが,コピーや保存の失敗時は有効な出力が保持されます.