JSONをExcelに変換する方法
オンラインツール、Python、JavaScript、専用ソフトウェアを使用してJSONをExcel(XLSX/CSV)に変換する方法。
Big JSON Team
• Technical WriterExpert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.
# JSONをExcelに変換する方法
JSONデータをExcelスプレッドシートに変換する様々な方法を学びます。
なぜJSONをExcelに変換するのか
使用例
- 📊 データ分析 - Excelでデータを分析
- 📈 レポート作成 - ビジネスレポート
- 👥 非技術者との共有 - 読みやすい形式
- 📉 可視化 - グラフとチャート作成
- 💾 データバックアップ - 読みやすいバックアップ
オンラインツール
1. BigJSON.online
URL: bigjson.online 特徴:- JSONをExcel/CSVに変換
- 無料で高速
- 大きなファイル対応
- データプライバシー保護
2. ConvertJSON
特徴:- シンプルな変換
- カスタマイズ可能
- CSV/XLSX出力
3. JSON to Excel Converter
特徴:- 一括変換
- フォーマット保持
- 無料
JavaScript/Node.jsでの変換
xlsx パッケージ
インストール
npm install xlsx
基本的な変換
const XLSX = require('xlsx');
const fs = require('fs');
// JSONデータ
const data = [
{ name: '田中太郎', age: 30, city: '東京' },
{ name: '佐藤花子', age: 25, city: '大阪' },
{ name: '鈴木一郎', age: 35, city: '名古屋' }
];
// ワークシートを作成
const worksheet = XLSX.utils.json_to_sheet(data);
// ワークブックを作成
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Users');
// Excelファイルに書き込み
XLSX.writeFile(workbook, 'users.xlsx');
console.log('Excelファイルが作成されました!');
JSONファイルから
const XLSX = require('xlsx');
const fs = require('fs');
// JSONファイルを読み取り
const jsonData = JSON.parse(fs.readFileSync('data.json', 'utf8'));
// Excelに変換
const worksheet = XLSX.utils.json_to_sheet(jsonData);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Data');
XLSX.writeFile(workbook, 'output.xlsx');
複数シート
const XLSX = require('xlsx');
const workbook = XLSX.utils.book_new();
// シート1:ユーザー
const users = [
{ id: 1, name: '田中太郎' },
{ id: 2, name: '佐藤花子' }
];
const usersSheet = XLSX.utils.json_to_sheet(users);
XLSX.utils.book_append_sheet(workbook, usersSheet, 'Users');
// シート2:注文
const orders = [
{ orderId: 1001, userId: 1, total: 5000 },
{ orderId: 1002, userId: 2, total: 3000 }
];
const ordersSheet = XLSX.utils.json_to_sheet(orders);
XLSX.utils.book_append_sheet(workbook, ordersSheet, 'Orders');
XLSX.writeFile(workbook, 'data.xlsx');
カスタムヘッダー
const data = [
{ name: '田中太郎', age: 30 },
{ name: '佐藤花子', age: 25 }
];
// カスタムヘッダー
const worksheet = XLSX.utils.json_to_sheet(data, {
header: ['name', 'age'],
skipHeader: false
});
// ヘッダーを日本語に変更
worksheet['A1'].v = '名前';
worksheet['B1'].v = '年齢';
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Data');
XLSX.writeFile(workbook, 'custom.xlsx');
ExcelJS(高度な機能)
インストール
npm install exceljs
スタイル付き変換
const ExcelJS = require('exceljs');
async function jsonToExcel() {
const workbook = new ExcelJS.Workbook();
const worksheet = workbook.addWorksheet('Users');
// カラム定義
worksheet.columns = [
{ header: '名前', key: 'name', width: 20 },
{ header: '年齢', key: 'age', width: 10 },
{ header: '都市', key: 'city', width: 15 }
];
// ヘッダースタイル
worksheet.getRow(1).font = { bold: true };
worksheet.getRow(1).fill = {
type: 'pattern',
pattern: 'solid',
fgColor: { argb: 'FFE0E0E0' }
};
// データ追加
const data = [
{ name: '田中太郎', age: 30, city: '東京' },
{ name: '佐藤花子', age: 25, city: '大阪' }
];
worksheet.addRows(data);
// ファイルに保存
await workbook.xlsx.writeFile('styled.xlsx');
console.log('スタイル付きExcelが作成されました!');
}
jsonToExcel();
条件付き書式
// 年齢に基づいて色を変更
worksheet.eachRow((row, rowNumber) => {
if (rowNumber > 1) { // ヘッダーをスキップ
const age = row.getCell(2).value;
if (age > 30) {
row.getCell(2).fill = {
type: 'pattern',
pattern: 'solid',
fgColor: { argb: 'FFFF0000' } // 赤
};
}
}
});
Pythonでの変換
pandas ライブラリ
インストール
pip install pandas openpyxl
基本的な変換
import pandas as pd
import json
# JSONを読み取り
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# DataFrameに変換
df = pd.DataFrame(data)
# Excelに書き込み
df.to_excel('output.xlsx', index=False, engine='openpyxl')
print('Excelファイルが作成されました!')
複数シート
import pandas as pd
# 複数のDataFrame
users = pd.DataFrame([
{'name': '田中太郎', 'age': 30},
{'name': '佐藤花子', 'age': 25}
])
orders = pd.DataFrame([
{'order_id': 1001, 'total': 5000},
{'order_id': 1002, 'total': 3000}
])
# ExcelWriterで複数シート
with pd.ExcelWriter('multi_sheet.xlsx', engine='openpyxl') as writer:
users.to_excel(writer, sheet_name='Users', index=False)
orders.to_excel(writer, sheet_name='Orders', index=False)
print('複数シートのExcelが作成されました!')
ネストされたJSONの処理
import pandas as pd
import json
# ネストされたJSON
json_data = '''
{
"users": [
{
"name": "田中太郎",
"age": 30,
"address": {
"city": "東京",
"zip": "100-0001"
}
},
{
"name": "佐藤花子",
"age": 25,
"address": {
"city": "大阪",
"zip": "530-0001"
}
}
]
}
'''
data = json.loads(json_data)
# json_normalizeでフラット化
df = pd.json_normalize(data['users'])
# Excelに書き込み
df.to_excel('flattened.xlsx', index=False)
print(df)
# name age address.city address.zip
# 0 田中太郎 30 東京 100-0001
# 1 佐藤花子 25 大阪 530-0001
スタイル付き
import pandas as pd
df = pd.DataFrame([
{'name': '田中太郎', 'age': 30, 'score': 85},
{'name': '佐藤花子', 'age': 25, 'score': 92}
])
# スタイル関数
def highlight_high_scores(val):
color = 'yellow' if val > 90 else ''
return f'background-color: {color}'
# スタイルを適用してExcelに
with pd.ExcelWriter('styled.xlsx', engine='openpyxl') as writer:
df.to_excel(writer, sheet_name='Data', index=False)
workbook = writer.book
worksheet = writer.sheets['Data']
# ヘッダーをボールドに
for cell in worksheet[1]:
cell.font = cell.font.copy(bold=True)
print('スタイル付きExcelが作成されました!')
CSVへの変換
JavaScriptでJSON to CSV
function jsonToCsv(jsonData) {
if (jsonData.length === 0) return '';
// ヘッダー
const headers = Object.keys(jsonData[0]);
const csvHeaders = headers.join(',');
// 行
const csvRows = jsonData.map(row => {
return headers.map(header => {
const value = row[header];
// 値をエスケープ
const escaped = String(value).replace(/"/g, '""');
return "${escaped}";
}).join(',');
});
return [csvHeaders, ...csvRows].join('\n');
}
// 使用
const data = [
{ name: '田中太郎', age: 30, city: '東京' },
{ name: '佐藤花子', age: 25, city: '大阪' }
];
const csv = jsonToCsv(data);
console.log(csv);
// ファイルに保存
const fs = require('fs');
fs.writeFileSync('output.csv', csv, 'utf8');
PythonでJSON to CSV
import pandas as pd
import json
# JSONを読み取り
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# DataFrameに変換
df = pd.DataFrame(data)
# CSVに書き込み
df.to_csv('output.csv', index=False, encoding='utf-8-sig')
print('CSVファイルが作成されました!')
複雑なJSON構造の処理
ネストされた配列
const data = [
{
name: '田中太郎',
hobbies: ['読書', '旅行', '料理']
},
{
name: '佐藤花子',
hobbies: ['音楽', 'スポーツ']
}
];
// 配列を文字列に変換
const flattened = data.map(person => ({
name: person.name,
hobbies: person.hobbies.join(', ')
}));
// Excelに変換
const XLSX = require('xlsx');
const worksheet = XLSX.utils.json_to_sheet(flattened);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Data');
XLSX.writeFile(workbook, 'hobbies.xlsx');
ネストされたオブジェクト
import pandas as pd
data = [
{
"name": "田中太郎",
"address": {
"city": "東京",
"zip": "100-0001"
}
}
]
# フラット化
df = pd.json_normalize(data)
# Excelに
df.to_excel('nested.xlsx', index=False)
コマンドラインツール
jq と csvkit
# JSONをCSVに変換
jq -r '.[] | [.name, .age, .city] | @csv' data.json > output.csv
# または csvkit を使用
pip install csvkit
in2csv data.json > output.csv
Miller (mlr)
# インストール
brew install miller
# 変換
mlr --j2c cat data.json > output.csv
ベストプラクティス
1. データ検証
function validateData(data) {
if (!Array.isArray(data)) {
throw new Error('データは配列である必要があります');
}
if (data.length === 0) {
throw new Error('データが空です');
}
// すべての行が同じキーを持つか確認
const firstKeys = Object.keys(data[0]);
const allSame = data.every(row => {
return JSON.stringify(Object.keys(row).sort()) ===
JSON.stringify(firstKeys.sort());
});
if (!allSame) {
console.warn('警告:行によってキーが異なります');
}
}
2. 大きなファイルの処理
import pandas as pd
import json
def convert_large_json(input_file, output_file, chunk_size=1000):
"""大きなJSONファイルをチャンクで処理"""
with open(input_file, 'r', encoding='utf-8') as f:
data = json.load(f)
# チャンクで処理
with pd.ExcelWriter(output_file, engine='openpyxl') as writer:
for i in range(0, len(data), chunk_size):
chunk = data[i:i + chunk_size]
df = pd.DataFrame(chunk)
if i == 0:
df.to_excel(writer, index=False, sheet_name='Data')
else:
df.to_excel(writer, index=False, sheet_name='Data',
startrow=i+1, header=False)
convert_large_json('large.json', 'large.xlsx')
3. エラーハンドリング
async function safeJsonToExcel(jsonData, outputFile) {
try {
// データ検証
if (!Array.isArray(jsonData) || jsonData.length === 0) {
throw new Error('無効なJSONデータ');
}
// 変換
const XLSX = require('xlsx');
const worksheet = XLSX.utils.json_to_sheet(jsonData);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Data');
// 書き込み
XLSX.writeFile(workbook, outputFile);
console.log(✅ 成功: ${outputFile});
return true;
} catch (error) {
console.error('❌ エラー:', error.message);
return false;
}
}
比較表
| 方法 | 簡単さ | 機能 | 速度 | コスト |
|------|-------|------|------|--------|
| オンラインツール | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | 無料 |
| xlsx (JS) | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 無料 |
| ExcelJS | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 無料 |
| pandas (Python) | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 無料 |
| 手動 | ⭐ | ⭐ | ⭐ | 無料 |
まとめ
クイック選択ガイド
- 単発変換 → オンラインツール(BigJSON)
- Node.jsプロジェクト → xlsx パッケージ
- 高度なスタイル → ExcelJS
- Pythonプロジェクト → pandas
- シンプルなCSV → 組み込みツール
推奨ワークフロー
// 1. データ検証
validateData(jsonData);
// 2. 変換
const XLSX = require('xlsx');
const ws = XLSX.utils.json_to_sheet(jsonData);
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'Data');
// 3. 保存
XLSX.writeFile(wb, 'output.xlsx');
// 4. 確認
console.log('✅ Excelファイルが作成されました');
JSONからExcelへの変換で、データ共有を簡単に!
関連記事
最高のJSONオンラインツール2026
JSONフォーマット、検証、変換のためのトップオンラインツール。無料で強力なブラウザベースのJSONユーティリティ。
PythonとJSON:完全ガイド
PythonでJSONを扱う方法を学びます。読み取り、書き込み、パース、シリアライズ、エラー処理、ベストプラクティス。
JavaScriptとJSON:完全ガイド
JavaScriptでJSONを扱う方法。JSON.parse()、JSON.stringify()、実用例、ベストプラクティス、よくあるエラー。