XLSX vs CSV: Cosa Cambia
Prima di convertire, è importante capire cosa CSV conserva e cosa perde:
| Caratteristica | XLSX | CSV |
|---|---|---|
| Valori delle celle (testo, numeri) | Sì | Sì |
| Formule | Sì (memorizzate) | No (solo valori calcolati) |
| Formattazione (grassetto, colori) | Sì | No |
| Più fogli | Sì | No (un foglio per file) |
| Grafici e immagini | Sì | No |
| Tipi di dato (date, valuta) | Sì (celle tipizzate) | Solo testo semplice |
| Dimensione file (1000 righe) | ~50–200 KB | ~10–50 KB |
| Compatibilità universale | Richiede Excel/reader | Qualsiasi editor di testo |
Se hai bisogno solo dei dati grezzi — per importarli in un database, analizzarli o condividerli tra piattaforme — CSV è la scelta giusta. Se devi conservare la formattazione, le formule o più fogli, mantieni il formato XLSX.
Metodo 1: Convertitore Online (CleverUtils)
Il metodo più rapido. Nessun software da installare, funziona su qualsiasi dispositivo con un browser.
- Vai su cleverutils.com/xlsx-to-csv
- Clicca su Scegli file XLSX oppure trascina il foglio di calcolo
- Clicca su Converti
- Scarica il file CSV risultante
Ideale per: conversioni rapide e occasionali. Nessuna installazione necessaria. I file vengono cifrati durante l'upload ed eliminati automaticamente entro 2 ore.
Metodo 2: Microsoft Excel
Se hai già Excel installato, puoi esportare direttamente:
- Apri il file
.xlsxin Excel - Se la cartella di lavoro ha più fogli, clicca sulla scheda del foglio che vuoi esportare
- Vai su File → Salva con nome (oppure File → Salva una copia nelle versioni più recenti)
- Nel menu a discesa “Salva come”, seleziona CSV (delimitato da virgole) (*.csv)
- Scegli la cartella di destinazione e clicca su Salva
- Excel avviserà che alcune funzionalità non sono compatibili con CSV — clicca su Sì per continuare
Excel offre diverse varianti CSV nel dialogo Salva con nome:
| Opzione | Codifica | Delimitatore | Ideale per |
|---|---|---|---|
| CSV (delimitato da virgole) | Predefinita di sistema (spesso Windows-1252) | Virgola | Dati in inglese US/UK |
| CSV UTF-8 (delimitato da virgole) | UTF-8 con BOM | Virgola | Caratteri internazionali |
| CSV (Macintosh) | Mac Roman | Virgola | App macOS legacy |
| CSV (MS-DOS) | Codepage OEM/DOS | Virgola | Programmi DOS legacy |
Suggerimento: Scegli sempre CSV UTF-8 se i tuoi dati contengono caratteri accentati, testo CJK o qualsiasi simbolo non-ASCII. Il semplice “CSV (delimitato da virgole)” usa una codifica specifica per la lingua del sistema che può corrompere i caratteri speciali su altri sistemi.
Metodo 3: Google Sheets
Gratuito e disponibile su qualsiasi piattaforma con un browser:
- Apri sheets.google.com e carica il tuo file XLSX (File → Apri → Carica)
- Google Sheets importa la cartella di lavoro conservando visivamente la maggior parte della formattazione
- Seleziona la scheda del foglio che vuoi esportare
- Vai su File → Scarica → Valori separati da virgola (.csv)
- Il foglio corrente viene scaricato come file
.csv
Google Sheets esporta sempre i CSV in codifica UTF-8, la scelta più sicura per i dati internazionali. Il delimitatore è sempre la virgola, indipendentemente dalle impostazioni locali.
Metodo 4: LibreOffice Calc
LibreOffice è gratuito, open-source e disponibile su Windows, macOS e Linux. Offre il massimo controllo sulle impostazioni di esportazione CSV.
- Apri il file
.xlsxin LibreOffice Calc - Vai su File → Salva con nome
- Seleziona Testo CSV (.csv) come formato
- Clicca su Usa formato Testo CSV quando richiesto
- Nella finestra di esportazione, configura:
- Set di caratteri: Unicode (UTF-8)
- Separatore di campo: virgola
,(o punto e virgola, tabulazione) - Separatore di testo: doppio apice
"
- Clicca su OK
Conversione Batch da Riga di Comando
LibreOffice supporta la modalità headless (senza interfaccia grafica), ideale per l'elaborazione batch:
# Converti un singolo file
libreoffice --headless --convert-to csv report.xlsx
# Converti tutti i file XLSX nella directory corrente
libreoffice --headless --convert-to csv *.xlsx
# Specifica la directory di output
libreoffice --headless --convert-to csv --outdir ./csv-output/ *.xlsx
Nota: La modalità headless di LibreOffice esporta solo il primo foglio. Per cartelle di lavoro con più fogli, usa uno script Python (Metodo 5) o converti ogni foglio manualmente.
Metodo 5: Python (pandas)
Python con la libreria pandas è la scelta migliore per conversioni automatizzate, ripetibili o batch. Gestisce nativamente cartelle di lavoro con più fogli, codifica e delimitatori personalizzati.
Conversione Base
import pandas as pd
# Leggi il primo foglio e salva come CSV
df = pd.read_excel("report.xlsx")
df.to_csv("report.csv", index=False, encoding="utf-8-sig")
Converti Tutti i Fogli in File CSV Separati
import pandas as pd
xlsx = pd.ExcelFile("workbook.xlsx")
for sheet_name in xlsx.sheet_names:
df = pd.read_excel(xlsx, sheet_name=sheet_name)
filename = f"{sheet_name}.csv"
df.to_csv(filename, index=False, encoding="utf-8-sig")
print(f"Salvato {filename}")
Conversione Batch di Più File XLSX
import pandas as pd
from pathlib import Path
for xlsx_file in Path(".").glob("*.xlsx"):
df = pd.read_excel(xlsx_file)
csv_file = xlsx_file.with_suffix(".csv")
df.to_csv(csv_file, index=False, encoding="utf-8-sig")
print(f"{xlsx_file} → {csv_file}")
Installazione: pip install pandas openpyxl — il motore openpyxl è necessario per leggere i file .xlsx. Viene usato automaticamente da pandas quando è installato.
Metodo 6: Strumenti da Riga di Comando
Per ambienti server, pipeline CI/CD o flussi di lavoro con script dove non puoi aprire un'interfaccia grafica.
ssconvert (Gnumeric)
Un convertitore di fogli di calcolo leggero da riga di comando incluso con Gnumeric:
# Installa su Ubuntu/Debian
sudo apt install gnumeric
# Converti un singolo file
ssconvert report.xlsx report.csv
# Esporta tutti i fogli (crea report.csv.0, report.csv.1, ecc.)
ssconvert -S report.xlsx report.csv
# Conversione batch di tutti i file XLSX
for f in *.xlsx; do ssconvert "$f" "${f%.xlsx}.csv"; done
csvkit (in2csv)
Un toolkit basato su Python progettato specificamente per operazioni CSV:
# Installa
pip install csvkit
# Converti (primo foglio per impostazione predefinita)
in2csv report.xlsx > report.csv
# Specifica un foglio per nome
in2csv --sheet "Sales Q4" report.xlsx > sales-q4.csv
# Elenca tutti i nomi dei fogli
in2csv --names report.xlsx
Problemi Comuni e Come Risolverli
Problemi di Codifica (Caratteri Storti)
Il problema più comune. Caratteri accentati (é, ü, ñ), testo CJK o simboli come € appaiono come é, ??? o altro testo illeggibile.
Causa principale: Il CSV è stato salvato con una codifica ma aperto con un'altra. Excel su Windows usa come predefinita la code page locale (ad es. Windows-1252 per l'Europa occidentale), non UTF-8.
Soluzione:
- Salva sempre come UTF-8 con BOM (byte order mark). Il BOM segnala a Excel e ad altre applicazioni che il file è UTF-8.
- In Python: usa
encoding="utf-8-sig"(UTF-8 con BOM) invece diencoding="utf-8" - Quando apri un CSV in Excel: usa la procedura guidata Dati → Da testo/CSV, che ti permette di selezionare la codifica prima di importare
Delimitatori Errati
Alcune impostazioni locali europee usano il punto e virgola (;) invece della virgola come delimitatore CSV, perché in queste aree la virgola viene usata come separatore decimale (es. 1.234,56 in italiano).
Sintomi: Tutti i dati appaiono in una singola colonna quando si apre in Excel, oppure i valori numerici sono suddivisi su più colonne.
Soluzione:
- Controlla le impostazioni locali: gli utenti Windows con impostazioni in italiano, tedesco o francese potrebbero aver bisogno del punto e virgola
- In Python:
df.to_csv("file.csv", sep=";")per output con punto e virgola come delimitatore - In LibreOffice: imposta esplicitamente il delimitatore di campo durante l'esportazione
- Durante l'importazione: usa la procedura guidata per importazione testo e specifica il delimitatore corretto
Cartelle di Lavoro con Più Fogli
Il formato CSV supporta esattamente un foglio per file. Quando si converte una cartella di lavoro XLSX con più fogli, la maggior parte degli strumenti esporta solo il primo foglio (attivo).
Soluzione:
- Esporta ogni foglio separatamente usando lo script Python multi-foglio descritto sopra
- Usa
ssconvert -S, che crea automaticamente file CSV numerati per ogni foglio - In Excel o Google Sheets, cambia manualmente le schede ed esporta ognuna
Formattazione di Date e Numeri
Le date e i numeri possono cambiare durante la conversione in CSV perché CSV non ha alcun concetto di tipi di dato. Una data come 2026-03-24 potrebbe diventare 46108 (numero seriale Excel) o 3/24/2026 (formato dipendente dalla lingua).
Soluzione:
- Formatta le colonne delle date come testo nel formato desiderato prima di esportare (es.
YYYY-MM-DDper ISO 8601) - In Python:
df.to_csv(..., date_format="%Y-%m-%d") - Per i numeri, rimuovi i separatori delle migliaia e assicura un formato decimale coerente
Quale Metodo Scegliere?
| Metodo | Velocità | Più Fogli | Controllo Codifica | Batch | Ideale per |
|---|---|---|---|---|---|
| CleverUtils | Immediato | Primo foglio | Auto (UTF-8) | No | Conversioni rapide e occasionali |
| Excel | Veloce | Manuale per foglio | 4 opzioni | No | Utenti desktop con Excel installato |
| Google Sheets | Medio | Manuale per foglio | Solo UTF-8 | No | Chromebook / senza app desktop |
| LibreOffice | Veloce | Primo foglio (CLI) | Controllo totale | Sì (CLI) | Utenti Linux, batch via CLI |
| Python | Veloce | Tutti i fogli | Controllo totale | Sì | Sviluppatori, automazione |
| CLI (ssconvert) | Veloce | Tutti i fogli (-S) | UTF-8 predefinito | Sì | Server, pipeline CI/CD |