Convertire JSON in Excel: Guida completa con esempi pratici
Impara a convertire JSON in Excel (XLSX/CSV): strumenti online, librerie JavaScript, Python, esempi pratici e best practices per export dati.
Big JSON Team
• Technical WriterExpert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.
# Convertire JSON in Excel: Guida completa con esempi pratici
Convertire dati JSON in formato Excel è un'esigenza comune per analisi dati, report e condivisione con utenti non tecnici. Questa guida ti mostrerà tutti i metodi per convertire JSON in Excel (XLSX) e CSV.
Perché convertire JSON in Excel?
Vantaggi
✅ Accessibilità: Excel è universale e user-friendly
✅ Analisi visiva: Grafici, tabelle pivot, formule
✅ Condivisione: Facile da condividere con stakeholder non tecnici
✅ Editing: Modifica dati senza programmazione
✅ Report: Creazione rapida di report professionali
Casi d'uso comuni
- Export dati da API
- Report aziendali
- Analisi dati
- Backup leggibili
- Condivisione con team non tecnici
Convertire JSON in CSV
CSV (Comma-Separated Values) è il formato più semplice e compatibile con Excel.
Metodo 1: JavaScript puro
function jsonToCSV(jsonData) {
// Assumi array di oggetti
if (jsonData.length === 0) return '';
// Estrai intestazioni (chiavi del primo oggetto)
const headers = Object.keys(jsonData[0]);
// Crea riga intestazioni
const csvHeaders = headers.join(',');
// Crea righe dati
const csvRows = jsonData.map(row => {
return headers.map(header => {
let value = row[header];
// Gestisci valori speciali
if (value === null || value === undefined) {
return '';
}
// Escape virgole e virgolette
if (typeof value === 'string') {
value = value.replace(/"/g, '""'); // Doppia virgoletta
if (value.includes(',') || value.includes('"') || value.includes('\n')) {
value = "${value}";
}
}
return value;
}).join(',');
});
// Combina tutto
return [csvHeaders, ...csvRows].join('\n');
}
// Uso
const utenti = [
{ nome: "Marco", cognome: "Rossi", età: 30, città: "Milano" },
{ nome: "Laura", cognome: "Bianchi", età: 28, città: "Roma" },
{ nome: "Paolo", cognome: "Verdi", età: 35, città: "Torino" }
];
const csv = jsonToCSV(utenti);
console.log(csv);
/
nome,cognome,età,città
Marco,Rossi,30,Milano
Laura,Bianchi,28,Roma
Paolo,Verdi,35,Torino
/
Download CSV dal browser
function downloadCSV(jsonData, filename = 'data.csv') {
// Converti in CSV
const csv = jsonToCSV(jsonData);
// Crea Blob
const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
// Crea link download
const link = document.createElement('a');
const url = URL.createObjectURL(blob);
link.setAttribute('href', url);
link.setAttribute('download', filename);
link.style.visibility = 'hidden';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
// Uso
const dati = [
{ prodotto: "Laptop", prezzo: 999, quantità: 5 },
{ prodotto: "Mouse", prezzo: 29, quantità: 15 },
{ prodotto: "Tastiera", prezzo: 79, quantità: 10 }
];
downloadCSV(dati, 'inventario.csv');
Metodo 2: Python con pandas
import json
import pandas as pd
# Leggi JSON
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# Converti in DataFrame
df = pd.DataFrame(data)
# Esporta in CSV
df.to_csv('output.csv', index=False, encoding='utf-8-sig')
print("File CSV creato con successo!")
Metodo 3: Python senza pandas
import json
import csv
# Leggi JSON
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# Scrivi CSV
if data:
with open('output.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
print("File CSV creato!")
Convertire JSON in Excel (XLSX)
XLSX offre più funzionalità di CSV: formattazione, formule, grafici, multipli fogli.
Metodo 1: JavaScript con SheetJS (xlsx)
// Installa: npm install xlsx
const XLSX = require('xlsx');
function jsonToExcel(jsonData, filename = 'data.xlsx') {
// Crea workbook
const workbook = XLSX.utils.book_new();
// Converti JSON in worksheet
const worksheet = XLSX.utils.json_to_sheet(jsonData);
// Aggiungi worksheet al workbook
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
// Scrivi file
XLSX.writeFile(workbook, filename);
console.log(File ${filename} creato con successo!);
}
// Uso
const vendite = [
{ data: "2026-01-15", prodotto: "Laptop", quantità: 3, prezzo: 999, totale: 2997 },
{ data: "2026-01-16", prodotto: "Mouse", quantità: 10, prezzo: 29, totale: 290 },
{ data: "2026-01-17", prodotto: "Tastiera", quantità: 5, prezzo: 79, totale: 395 }
];
jsonToExcel(vendite, 'vendite.xlsx');
Excel con formattazione
const XLSX = require('xlsx');
function jsonToExcelAdvanced(jsonData, filename = 'data.xlsx') {
// Crea workbook
const workbook = XLSX.utils.book_new();
// Converti JSON in worksheet
const worksheet = XLSX.utils.json_to_sheet(jsonData);
// Imposta larghezza colonne
const columnWidths = [
{ wch: 12 }, // Colonna A
{ wch: 20 }, // Colonna B
{ wch: 10 }, // Colonna C
{ wch: 10 } // Colonna D
];
worksheet['!cols'] = columnWidths;
// Aggiungi worksheet
XLSX.utils.book_append_sheet(workbook, worksheet, 'Dati');
// Scrivi file
XLSX.writeFile(workbook, filename);
}
// Uso
jsonToExcelAdvanced(vendite, 'vendite_formattate.xlsx');
Browser download con SheetJS
function downloadExcel(jsonData, filename = 'data.xlsx') {
// Crea workbook
const workbook = XLSX.utils.book_new();
const worksheet = XLSX.utils.json_to_sheet(jsonData);
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
// Genera file binario
const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
// Crea Blob
const blob = new Blob([excelBuffer], {
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
});
// Download
const url = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = filename;
link.click();
URL.revokeObjectURL(url);
}
// Uso in React/Vue/vanilla JS
const handleExport = () => {
const data = [
{ nome: "Marco", vendite: 15000, regione: "Nord" },
{ nome: "Laura", vendite: 18000, regione: "Sud" },
{ nome: "Paolo", vendite: 12000, regione: "Centro" }
];
downloadExcel(data, 'report_vendite.xlsx');
};
Metodo 2: Python con openpyxl
import json
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment
# Leggi JSON
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# Crea workbook
wb = Workbook()
ws = wb.active
ws.title = "Dati"
# Scrivi intestazioni
if data:
headers = list(data[0].keys())
# Stile intestazioni
header_fill = PatternFill(start_color="366092", end_color="366092", fill_type="solid")
header_font = Font(bold=True, color="FFFFFF")
for col, header in enumerate(headers, start=1):
cell = ws.cell(row=1, column=col, value=header)
cell.fill = header_fill
cell.font = header_font
cell.alignment = Alignment(horizontal='center')
# Scrivi dati
for row_idx, record in enumerate(data, start=2):
for col_idx, header in enumerate(headers, start=1):
value = record.get(header, '')
ws.cell(row=row_idx, column=col_idx, value=value)
# Auto-fit colonne
for column in ws.columns:
max_length = 0
column_letter = column[0].column_letter
for cell in column:
if cell.value:
max_length = max(max_length, len(str(cell.value)))
ws.column_dimensions[column_letter].width = max_length + 2
# Salva
wb.save('output.xlsx')
print("File Excel creato con successo!")
Metodo 3: Python con pandas
import json
import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import Font, PatternFill
# Leggi JSON
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# Converti in DataFrame
df = pd.DataFrame(data)
# Crea Excel writer
with pd.ExcelWriter('output.xlsx', engine='openpyxl') as writer:
# Scrivi DataFrame
df.to_excel(writer, index=False, sheet_name='Dati')
# Ottieni worksheet per formattazione
workbook = writer.book
worksheet = writer.sheets['Dati']
# Formatta intestazioni
header_fill = PatternFill(start_color="366092", end_color="366092", fill_type="solid")
header_font = Font(bold=True, color="FFFFFF")
for cell in worksheet[1]:
cell.fill = header_fill
cell.font = header_font
# Auto-fit colonne
for column in worksheet.columns:
max_length = 0
column_letter = column[0].column_letter
for cell in column:
if cell.value:
max_length = max(max_length, len(str(cell.value)))
worksheet.column_dimensions[column_letter].width = max_length + 2
print("File Excel formattato creato!")
JSON annidato a Excel
Appiattire JSON annidato (JavaScript)
function flattenJSON(obj, prefix = '') {
const flattened = {};
for (const [key, value] of Object.entries(obj)) {
const newKey = prefix ? ${prefix}.${key} : key;
if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
// Ricorsione per oggetti annidati
Object.assign(flattened, flattenJSON(value, newKey));
} else if (Array.isArray(value)) {
// Converti array in stringa
flattened[newKey] = value.join(', ');
} else {
flattened[newKey] = value;
}
}
return flattened;
}
// JSON annidato
const utenti = [
{
nome: "Marco",
contatti: {
email: "marco@example.com",
telefono: "+39 02 1234"
},
competenze: ["JavaScript", "Python", "React"]
},
{
nome: "Laura",
contatti: {
email: "laura@example.com",
telefono: "+39 06 5678"
},
competenze: ["Java", "SQL", "Spring"]
}
];
// Appiattisci
const flattened = utenti.map(u => flattenJSON(u));
console.log(flattened);
/
[
{
nome: "Marco",
"contatti.email": "marco@example.com",
"contatti.telefono": "+39 02 1234",
competenze: "JavaScript, Python, React"
},
{
nome: "Laura",
"contatti.email": "laura@example.com",
"contatti.telefono": "+39 06 5678",
competenze: "Java, SQL, Spring"
}
]
/
// Ora converti in Excel
jsonToExcel(flattened, 'utenti_appiattiti.xlsx');
Appiattire JSON annidato (Python)
import json
import pandas as pd
from pandas import json_normalize
# Leggi JSON annidato
with open('nested_data.json', 'r') as f:
data = json.load(f)
# Normalizza (appiattisci)
df = json_normalize(data)
# Esporta in Excel
df.to_excel('output_flattened.xlsx', index=False)
print("JSON annidato convertito in Excel!")
Multipli fogli Excel
JavaScript con SheetJS
const XLSX = require('xlsx');
function jsonToMultiSheetExcel(dataObject, filename = 'multi_sheet.xlsx') {
// Crea workbook
const workbook = XLSX.utils.book_new();
// Aggiungi ogni dataset come foglio separato
for (const [sheetName, data] of Object.entries(dataObject)) {
const worksheet = XLSX.utils.json_to_sheet(data);
XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);
}
// Scrivi file
XLSX.writeFile(workbook, filename);
}
// Uso
const report = {
"Vendite": [
{ mese: "Gennaio", vendite: 15000, regione: "Nord" },
{ mese: "Febbraio", vendite: 18000, regione: "Nord" }
],
"Clienti": [
{ nome: "ACME Corp", città: "Milano", valore: 50000 },
{ nome: "Tech Solutions", città: "Roma", valore: 35000 }
],
"Prodotti": [
{ codice: "LAP-001", nome: "Laptop Pro", prezzo: 999 },
{ codice: "MOU-001", nome: "Mouse Wireless", prezzo: 29 }
]
};
jsonToMultiSheetExcel(report, 'report_completo.xlsx');
Python con pandas
import pandas as pd
# Dati per diversi fogli
vendite = [
{"mese": "Gennaio", "vendite": 15000},
{"mese": "Febbraio", "vendite": 18000}
]
clienti = [
{"nome": "ACME Corp", "città": "Milano"},
{"nome": "Tech Solutions", "città": "Roma"}
]
# Crea Excel con multipli fogli
with pd.ExcelWriter('report.xlsx', engine='openpyxl') as writer:
pd.DataFrame(vendite).to_excel(writer, sheet_name='Vendite', index=False)
pd.DataFrame(clienti).to_excel(writer, sheet_name='Clienti', index=False)
print("Excel multi-foglio creato!")
Strumenti online
1. JSON to CSV/Excel Converters
ConvertCSV.com- Supporta JSON → CSV, Excel
- Opzioni formattazione
- Gratis
- Conversione rapida
- Download immediato
2. Uso
API to Excel automation
Node.js script completo
const axios = require('axios');
const XLSX = require('xlsx');
async function apiToExcel(apiUrl, filename = 'api_data.xlsx') {
try {
// Fetch dati da API
console.log('Fetching data from API...');
const response = await axios.get(apiUrl);
const data = response.data;
// Se response è oggetto con array dentro
const arrayData = Array.isArray(data) ? data : data.results || data.data;
if (!Array.isArray(arrayData)) {
throw new Error('API response non è un array');
}
// Converti in Excel
console.log(Converting ${arrayData.length} records to Excel...);
const workbook = XLSX.utils.book_new();
const worksheet = XLSX.utils.json_to_sheet(arrayData);
XLSX.utils.book_append_sheet(workbook, worksheet, 'Data');
// Salva
XLSX.writeFile(workbook, filename);
console.log(✅ File ${filename} creato con successo!);
} catch (error) {
console.error('❌ Errore:', error.message);
}
}
// Uso
apiToExcel('https://api.example.com/users', 'users.xlsx');
Python script completo
import requests
import pandas as pd
def api_to_excel(api_url, filename='api_data.xlsx'):
"""Scarica dati da API e salva in Excel"""
try:
# Fetch dati
print('Fetching data from API...')
response = requests.get(api_url)
response.raise_for_status()
data = response.json()
# Gestisci diversi formati response
if isinstance(data, dict):
# Cerca array nei campi comuni
for key in ['results', 'data', 'items']:
if key in data and isinstance(data[key], list):
data = data[key]
break
if not isinstance(data, list):
raise ValueError('API response non contiene array')
# Converti in DataFrame
df = pd.DataFrame(data)
# Salva in Excel
print(f'Converting {len(df)} records to Excel...')
df.to_excel(filename, index=False, engine='openpyxl')
print(f'✅ File {filename} creato con successo!')
except Exception as e:
print(f'❌ Errore: {str(e)}')
# Uso
api_to_excel('https://api.example.com/products', 'products.xlsx')
Best practices
1. Gestisci tipi di dati
function sanitizeForExcel(value) {
// Null/undefined → stringa vuota
if (value === null || value === undefined) {
return '';
}
// Date → formato ISO
if (value instanceof Date) {
return value.toISOString().split('T')[0];
}
// Array → stringa separata da virgole
if (Array.isArray(value)) {
return value.join(', ');
}
// Oggetto → JSON string
if (typeof value === 'object') {
return JSON.stringify(value);
}
return value;
}
2. Limita dimensione file
// Chunking per file grandi
function exportLargeDataset(data, chunkSize = 10000) {
const chunks = [];
for (let i = 0; i < data.length; i += chunkSize) {
chunks.push(data.slice(i, i + chunkSize));
}
chunks.forEach((chunk, index) => {
jsonToExcel(chunk, data_part_${index + 1}.xlsx);
});
}
3. Usa encoding UTF-8
# Python
df.to_csv('output.csv', encoding='utf-8-sig', index=False)
# utf-8-sig aggiunge BOM per compatibilità Excel
4. Formatta date correttamente
import pandas as pd
df = pd.DataFrame(data)
df['data'] = pd.to_datetime(df['data'])
with pd.ExcelWriter('output.xlsx') as writer:
df.to_excel(writer, index=False)
# Formatta colonna date
workbook = writer.book
worksheet = writer.sheets['Sheet1']
date_format = workbook.add_format({'num_format': 'dd/mm/yyyy'})
worksheet.set_column('A:A', 12, date_format)
Conclusione
Convertire JSON in Excel è essenziale per:
- ✅ Condivisione dati con utenti non tecnici
- ✅ Analisi e visualizzazione
- ✅ Report aziendali
- ✅ Backup leggibili
- JavaScript: SheetJS (xlsx)
- Python: pandas + openpyxl
- Online: ConvertCSV.com
- CSV semplice: Codice nativo
Scegli il metodo più adatto al tuo caso d'uso e inizia a esportare i tuoi dati JSON!
Articoli Correlati
Migliori strumenti JSON online 2026: Guida completa
Scopri i migliori strumenti JSON online per formattare, validare, convertire e visualizzare JSON. Confronto dettagliato con esempi pratici.
Python e JSON: Guida completa alla manipolazione dati
Impara a lavorare con JSON in Python: parsing, serializzazione, validazione, file I/O e best practices. Include esempi pratici con json, jsonschema e pydantic.
JavaScript e JSON: Guida completa a JSON.parse() e JSON.stringify()
Guida completa su JSON in JavaScript: parsing, serializzazione, gestione errori, localStorage, fetch API e best practices. Include esempi pratici e troubleshooting.