Excel to JSON 変換ツール
Excelファイルをアップロードして、スプレッドシートデータをJSON形式に変換
Excelファイルをここにドラッグ&ドロップ、またはクリックして選択
Excel to JSONとは?
Excel to JSONは、Microsoft Excel(.xlsx/.xls)スプレッドシートデータをJSON(JavaScript Object Notation)形式に変換するオンラインデータ変換ツールです。
Excelは世界で最も人気のあるスプレッドシートソフトウェアで、データ保存、分析、レポート作成に広く使用されています。JSONは、現代のWebアプリケーションやAPIで最も一般的に使用されるデータ交換形式で、明確な構造と簡単な解析が特徴です。
このツールを使用すると、ExcelスプレッドシートデータをJSON配列に素早く変換でき、プログラミング、データ分析、Web開発に便利です。すべての処理はブラウザ内でローカルに行われ、データの安全性が確保されます。
使い方
使い方
- アップロードエリアをクリックするか、Excelファイル(.xlsx、.xls形式に対応)をドラッグ&ドロップしてください
- 複数のシートがある場合は、ドロップダウンメニューから変換するシートを選択してください
- 最初の行をJSONオブジェクトのフィールド名として使用するかどうかを選択してください
- フォーマット済みのJSONデータが自動的に生成され、コピー可能な状態になります
スプレッドシートに関する注意
- JSONを使用する前に、選択したシート、ヘッダー行、結合セル、空行、日付形式を確認してください。
- スプレッドシートでは表示形式と生の値が混在することがあるため、変換後に数値と日付を確認してください。
利用シーン
仕組み
現代の.xlsxワークブックはECMA-376 / ISO/IEC 29500(Office Open XML標準)で定義されたSpreadsheetMLファイルである。.xlsx拡張子はZIPコンテナであり、内部のエントリはxl/worksheets/sheetN.xmlのXML文書で、文字列はxl/sharedStrings.xmlの共有文字列テーブルに格納され、セル型はt属性で宣言される(s = 共有文字列、n = 数値、b = 真偽値、str = インライン文字列、d = ISO 8601形式の日付)。ページはFileReader.readAsArrayBufferでアップロードされたFileを読み込み、ArrayBufferをSheetJS(xlsx)に渡す。XLSX.read(buffer, {type: 'array'})はワークブックオブジェクトを返し、そのSheetNames配列がシートセレクタを制御し、XLSX.utils.sheet_to_json(sheet, options)はセルグリッドを走査してオブジェクトの配列(ヘッダー行をキーとする)またはheader: 1を渡した場合の配列の配列を生成する。 レガシーな.xlsはバイナリBIFF8形式(Excel 97-2003)であり、SheetJSは同じread()エントリポイントでtype: 'binary'(FileReader.readAsBinaryString用)または'array'(バイト読み取り用)でデコードする。両形式のセル日付値はシリアル番号として格納される(Excelでは1900年からの日数で、1900-02-29の閏年バグにより1900-03-01以前の日付が1日ずれる。Mac版Excelでワークブックのdate1904フラグが設定されている場合は1904-01-01からの日数)。JavaScript Dateへの変換は、閏年バグを考慮した上で1900システムでは (serial - 25569) * 86400 * 1000 ミリ秒でUnixエポックからの値となる。数式はf属性に格納され、SheetJSは最後にキャッシュされた結果をvに報告する。ワークブックが再計算を行わずに保存されたツール(一部のスクリプトによるエクスポートなど)では、vが欠落または陳腐化している可能性がある。 最初の行をヘッダーとして使用する場合、重複または空白のヘッダーセルはSheetJSにキーのスキップまたは自動リネーム(例:__EMPTY、__EMPTY_1)を強制し、下流のJSON契約を壊す。結合セル範囲(worksheet/mergeCellsで宣言)は左上アンカーにのみ値を公開し、結合された末尾セルにはundefinedを出力するため、結合されたタイトル行は1つの値を持つレコードとN - 1のスパースレコードを生成する。数十メガバイトを超えるワークブックでは、同期的なXLSX.read()パスがUIスレッドをブロックする可能性がある。ストリーミングの代替手段として、解析をWeb Workerに移動してメインスレッドの応答性を維持する方法がある。
- .xlsxはXMLのZIPコンテナ(ECMA-376 / ISO/IEC 29500);.xlsはバイナリBIFF8形式;SheetJS XLSX.read(buffer, {type: 'array'})はFileReader.readAsArrayBuffer経由で両方に対応する。
- sheet_to_jsonのオプション:header: 1は配列の配列を返す;header: 'A'はスプレッドシートの列文字を使用;defval: nullはスパースセルをキーの削除ではなくnullで埋める;raw: falseはExcelの表示フォーマットを適用する。
- Excelの日付シリアルは1900-01-01からの日数(1900-02-29の閏年バグ付き;Macの1904日付システムでは1904-01-01からの日数);JS Date ms = (serial - 25569) * 86400000(Unixエポックから)。
- 重複または空白のヘッダーセルは自動リネームされたキー(__EMPTY、__EMPTY_1)になるか、サイレントに衝突する;スキーマに依存する前にこれらの文字列を検証すること。
- 結合セル範囲(worksheet.mergeCells)は左上アンカーにのみ値を公開する;結合内の末尾セルはundefinedとなるため、結合されたタイトル行は値を持つ1レコードと空フィールドのN-1レコードを生成する。
- 数式セルは式をfに、最後にキャッシュされた結果をvに格納する;再計算せずに保存するツールはvを陳腐化または欠落させ、SheetJSはvをそのまま返す。
- 約10 MB超のワークブックではXLSX.readをWeb Workerに移動すること;同期的な解析パスはrequestAnimationFrameをブロックし、大きなシートでタブを数秒間フリーズさせる可能性がある。
使用例
従業員シートを JSON オブジェクト配列に変換
Excel の行 (シート Staff):
id | name | dept | salary
1 | Alice | Engineering| 8500
2 | Bob | Sales | 6200
JSON 出力:
[
{ "id": 1, "name": "Alice", "dept": "Engineering", "salary": 8500 },
{ "id": 2, "name": "Bob", "dept": "Sales", "salary": 6200 }
]複数シートのワークブック (orders.xlsx)
ワークブックのシート: ["Customers", "Orders", "Products"]
対象シートを選択: Orders
先頭行をヘッダーとして使用: order_id, customer_id, total, date
結果: 1,284 行を JSON オブジェクトに変換
末尾の空セルは空文字列ではなく null になるExcel の日付セルを ISO 8601 文字列に変換
セル A2 (Excel で日付として書式設定): 46173 (Excel のシリアル値)
Excel での表示: 2026-06-01
JSON 出力:
{ "order_date": "2026-06-01T00:00:00.000Z" }
備考: Excel は日付を数値のシリアル値として保持しますが、本ツールは ISO 文字列に正規化しますスペースや漢字を含むヘッダー
ヘッダー行: "Order No." | "客户姓名" | "金额 (USD)"
JSON のキーはそのまま保持されます:
{
"Order No.": "A-1024",
"客户姓名": "王小明",
"金额 (USD)": 199.50
}よくある質問
アップロードした Excel ファイルはサーバーに送信されますか?
いいえ。.xlsx、.xls、.csv ファイルは SheetJS を使ってブラウザ内で解析されます。バイトデータがデバイスを離れることはありません。ファイル読み込み時にネットワークタブを確認することで、ご自身で確認できます。
Excel のどの機能が変換後も保持されますか?
セルの値、日付(オプションにより ISO 文字列または Excel シリアル番号)、数値、ブール値、テキストが保持されます。グラフ、画像、条件付き書式、数式(数式自体ではなくキャッシュされた値が保持される)、コメント、結合セルは省略または簡略化されます。
すべてのシートが変換されますか?
選択したシートだけが変換されます。シートのドロップダウンからエクスポートするシートを選んでください。複数のシートが必要な場合は、1 つずつ変換してください。
ヘッダーと行はどのように JSON にマッピングされますか?
「最初の行をヘッダーとする」をオンにすると、ヘッダーセルをキーに持つオブジェクトの配列が出力されます。オフの場合はセル値の配列の配列になります。空のセルは出力で null になります。
日付はどのように扱われますか?
Excel は日付をシリアル番号(1900 年からの日数)として保存します。このページではデフォルトで ISO 8601 文字列(2026-06-13)に変換します。後で Excel に再インポートする際に便利な「raw」モードに切り替えるとシリアル番号のまま保持できます。時刻のみのセルは「T14:30:00」のような文字列になります。
数式はどう処理されますか?
数式は評価されず、Excel が最後に保存したキャッシュ値のみが使われます。最新の数式結果が必要な場合は、Excel でファイルを開いて再計算(F9)し、保存してから再度アップロードしてください。
ファイルサイズの上限はありますか?
ブラウザのメモリによって制限されます。最近のデスクトップなら数百 MB のワークブックまで処理可能です。100 万行を超える非常に大きなファイルの場合は、ブラウザがメモリ不足になるため、デスクトップのスクリプトツール(Python pandas、Excel Power Query)をご利用ください。