← Torna al Blog

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 Team13 min di letturatools
B

Big JSON Team

Technical Writer

Expert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.

13 min di lettura

# 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

JSON-CSV.com
  • Conversione rapida
  • Download immediato

2. Uso

  • Copia JSON
  • Incolla nel convertitore
  • Scegli opzioni (delimitatore, encoding)
  • Download file
  • 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

    Strumenti consigliati:
    • 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!

    Share:

    Articoli Correlati

    Read in English