JSON → Excel 変換
JSONSheetJS で JSON 配列を Excel .xlsx ブックに変換してダウンロード。
リモート URL の取得は行いません。JSON を直接貼り付けてください。
このページの内容
JSON → Excel 変換とは?#
JSON → Excel コンバーターは、テーブルの形(典型的には類似オブジェクトの配列)をした JSON ドキュメントを受け取り、Excel・Google Sheets・LibreOffice で開ける本物の**.xlsx ブック**を生成します。各オブジェクトが 1 行になり、各最上位キーが列になり、シートの最初の行がヘッダーになります。出力は名前を変えただけの CSV ではなく、本物のバイナリスプレッドシートファイルです。
これは、JSON を話すシステム(API、ログ、NoSQL エクスポート)とスプレッドシートで作業する人々の間のギャップを埋めます。バックエンドは 1000 件のレコードを JSON でダンプでき、人間のアナリストはピボット・フィルタ・グラフのためにそれらを Excel で扱いたいと考えます。コンバーターは現実のデータが持ち込む厄介事——入れ子のオブジェクト、一部の行にだけ存在するフィールド、グリッドに自然に収まらない配列値フィールド——も処理します。
2 つの慣習が重労働を担います。入れ子のオブジェクトはドット記法のキーに平坦化されます——{"address": {"city": "London"}} は address.city という名前の列になります。配列値フィールド(と平坦化を生き延んだオブジェクト)は、スプレッドシートのセルはネストした構造ではなく 1 つの値を保持するため、JSON テキストとしてセルに文字列化されます。結果は、スプレッドシートソフトが文句なく開ける、フラットで長方形のテーブルです。
使い方#
- オブジェクトの JSON 配列を左側の入力ペインに貼り付けます。単独のオブジェクトや、
{"data": [...]}のように単一キーの下に行を包んだオブジェクトも受け付けます。 - ネストを平坦化(既定でオン)にチェックを入れて、入れ子のオブジェクトをドット記法の列に展開します。入れ子のオブジェクトを単一セル内の JSON テキストとして保持したい場合はチェックを外してください。
- 出力ペインは、シートに配置される内容を正確に反映したタブ区切りのプレビューを示します——ヘッダー行に続いてデータ行です。ステータス行はエクスポートされた行数を報告します。
- ダウンロード .xlsx をクリックしてブックを保存します。ファイルはブラウザ内で構築され、直接ダウンロードされます。サーバーはありません。
- サンプルは小さな従業員データセットを読み込みます。クリアは両ペインをリセットし、ダウンロードボタンを無効化します。
主な特徴#
- 名前を変えただけの CSV ではなく、本物の
.xlsxファイル。 ブックは SheetJS で構築されバイナリとしてダウンロードされるため、Excel は適切な列・型・シート構造付きでネイティブに開けます。 - 乱雑なデータでも安定した列順序。 列はすべての行のキーの和集合として、最初に現れた順で計算されます。まちまちの行が列をずらしたり崩したりすることはありません——欠落したフィールドは単に空のセルになります。
- ドット記法の平坦化。 入れ子のオブジェクトは名前付きの列(
address.city、address.zip)に展開されるため、内側の値をシート上で個別にフィルタ・ソートできます。 - タブ区切りのプレビュー。 出力ペインはシートの内容を正確に反映するため、ダウンロード前に形を検証できます。
- 純粋なクライアントサイド。 解析・平坦化・ブック生成はすべてブラウザ内で動きます。データがページから外に出ることはありません。
実例#
サンプルを読み込むと、入力は 3 件の従業員レコードの配列になります:
[
{ "id": 1, "name": "Ada Lovelace", "role": "Engineer", "salary": 95000, "skills": ["math", "logic"] },
{ "id": 2, "name": "Bob", "role": "PM", "salary": 120000, "skills": ["docs", "plan"] },
{ "id": 3, "name": "Grace", "role": "Architect", "salary": 150000, "skills": ["systems", "c", "cobol"] }
]
3 行とも同じキーを共有するため、列はこの順に id、name、role、salary、skills になります。skills フィールドは配列なので、各セルに文字列化されます。タブ区切りのプレビューは次のとおりです:
id name role salary skills
1 Ada Lovelace Engineer 95000 ["math","logic"]
2 Bob PM 120000 ["docs","plan"]
3 Grace Architect 150000 ["systems","c","cobol"]
ダウンロード .xlsx をクリックすると、最初のシートがこの内容どおりで、id / name / role / salary / skills がヘッダー行になっているブックが得られます。そこから Excel は salary を数値として(合計や平均が取れる)、skills をテキストとして扱います。
もし salary を省いた 4 行目を追加しても、コンバーターは 5 列すべてを出力し、そのセルだけを空のままにします——列のずれも、下流でのデータの不整列も起きません。
よくある質問#
入れ子のオブジェクトが、名前にドットを含む列になるのはなぜですか?#
それがネストを平坦化オプションです。"address": {"city": "London", "zip": "NW1"} のようなフィールドは 1 つのセルに有用に収まらないため、address.city と address.zip の列に展開されます——それぞれ Excel で個別にフィルタ・ソートできます。オブジェクト全体を単一の address セル内の JSON 文字列として保持したい場合は、このオプションをオフにしてください。
配列がセル内で ["math","logic"] と表示されるのはなぜですか?#
スプレッドシートのセルは 1 つの値を保持し、JSON の配列はネストした構造であるため、JSON テキストにシリアライズされてそのままセルに置かれます。これによりデータはロスレスに保たれ(何も削り落とされない)、後で解析することもできます。各配列要素を独自の行にしたい場合は、変換前に元の JSON を再構成してください(要素ごとに 1 レコード)。
行によってフィールドが違います。列はどうなりますか?#
コンバーターはすべての行をまたぐすべてのキーの和集合を、最初に現れた順で取得し、それをヘッダーとして使います。あるフィールドを欠いた行は、そのフィールドのセルが空になります。したがって、余分の manager フィールドを持つ行を追加しても、単に manager 列が増えるだけです——それを持たない行は空欄のままで、既存のものは何も動きません。
.xlsx を生成するためにデータはどこかにアップロードされますか?#
いいえ。解析・平坦化・SheetJS によるブック生成はすべてブラウザ内で動きます。ダウンロードはメモリ内のバッファから作られ、ブラウザの保存ダイアログに直接渡されます——バックエンドもネットワークリクエストもありません。