Lezione di storia: Che cos’è un file .csv? Perché Excel cambia i tuoi dati quando lo apre
Valori separati da virgole: la tabella in testo semplice nata dal FORTRAN degli anni Settanta e dai primi fogli di calcolo, rimasta senza documentazione fino alla RFC 4180 del 2005, che ancora perde zeri iniziali e nomi di geni ogni volta che un foglio di calcolo indovina che cosa significa il testo.

TL;DR
Un file .csv contiene valori separati da virgole (comma-separated values): una tabella scritta come testo semplice, un record per riga, con virgole tra i campi e virgolette doppie attorno a ogni campo che contiene una virgola, una virgoletta o un a capo. L’idea è più antica del PC: nel 1972 i compilatori FORTRAN di IBM leggevano input separati da virgole da terminali e schede perforate, e nel 1983 i programmi di foglio di calcolo salvavano già file con l’estensione .CSV. Nessuno ha messo per iscritto le regole in modo formale fino alla RFC 4180 dell’ottobre 2005, che ha anche registrato il tipo MIME text/csv. Poiché un CSV non porta tipi di colonna, formule né un’etichetta di codifica, ogni programma che lo apre deve indovinare, e le ipotesi di Excel sono il motivo per cui spariscono gli zeri iniziali, i nomi dei geni diventano date e a volte l’intero file finisce in un’unica colonna.
Che cos’è un file .csv?
Apri un CSV nel Blocco note e non c’è nulla di nascosto: righe di testo, ogni riga un record, ogni virgola un cambio di colonna. Un campo che deve contenere una virgola va tra virgolette doppie, e una virgoletta dentro quel campo si scrive due volte. Questo è tutto il formato. Non c’è un blocco di intestazione, né un elenco di tipi di colonna, né formule, né formattazione: solo i valori, così come li ha scritti un programma. Questa semplicità spiega perché quasi ogni database, foglio di calcolo, programma di contabilità, banca e linguaggio di programmazione sappia leggere e scrivere CSV, e perché sia ancora il formato di ripiego della maggior parte delle esportazioni e importazioni di dati.
Perché Excel rovina il mio CSV?
Poiché un CSV non può dire che cosa siano i suoi valori, Excel decide da solo. La documentazione di Microsoft elenca le conversioni automatiche che Excel applica per impostazione predefinita quando il testo viene digitato, incollato o caricato: rimuove gli zeri iniziali e converte il resto in numero (00123 diventa 123, ed è così che CAP e matricole perdono la prima cifra); conserva solo le prime 15 cifre dei numeri lunghi e può mostrarle in notazione scientifica (le ultime cifre di un numero di carta o di conto diventano zeri); tratta le cifre attorno alla lettera E come un esponente (123E5 diventa 1,23E+07); e converte in data un testo simile a una data come JAN1. Se poi salvi di nuovo il foglio come CSV, vengono scritti i valori già convertiti.
La seconda sorpresa è il delimitatore. Quando salva o apre un CSV, Excel usa il separatore di elenco delle impostazioni internazionali di Windows. In gran parte dell’Europa continentale la virgola è il separatore decimale (3,14), quindi il separatore di elenco è il punto e virgola, e le istruzioni di Microsoft confermano il legame: impostare la virgola come separatore decimale «costringe Excel a usare il punto e virgola come separatore di elenco». Un file salvato a Roma può quindi essere pieno di punti e virgola, e un file separato da virgole proveniente da un sistema statunitense può aprirsi con ogni riga schiacciata nella colonna A. La codifica del testo aggiunge una terza trappola: Microsoft osserva che un CSV UTF-8 si apre normalmente solo se è stato salvato con il byte order mark (BOM), pochi byte invisibili all’inizio che annunciano la codifica; senza, le lettere accentate possono diventare illeggibili, a meno di importare il file scegliendo UTF-8.
Aprire un CSV senza congetture
Invece del doppio clic, usa in Excel Dati > Recupera dati > Da testo/CSV, controlla il delimitatore e l’origine del file (la codifica) e imposta come Testo colonne come CAP, numeri di conto o simboli di geni prima di caricare. Le versioni attuali di Excel permettono anche di disattivare singole conversioni in File > Opzioni > Dati > Conversione automatica dei dati.
1972: virgole al posto delle colonne della scheda
Prima di avere un nome, il CSV ha avuto una ragione. I dati per i programmi su mainframe degli anni Sessanta venivano di solito perforati in colonne fisse su schede da 80 colonne, e un programma FORTRAN aveva bisogno di un’istruzione FORMAT che dicesse esattamente quali colonne contenevano quale numero; un valore perforato una colonna più in là veniva letto male. I prodotti FORTRAN IV di IBM per i sistemi operativi OS e VM/370, descritti in un manuale di informazioni generali datato luglio 1972, offrivano un’alternativa chiamata input/output guidato da lista. Il manuale spiega che «le voci di input sono separate da spazi o virgole, e virgole consecutive indicano valori omessi», e che viene eliminata la preoccupazione del programmatore «per la disposizione dei dati e per le specifiche posizioni delle colonne della scheda». All’epoca IBM la elencava tra le sue estensioni al linguaggio standard.
L’input guidato da lista è entrato nel linguaggio standard con FORTRAN 77, approvato nel 1978. Accettava virgole o spazi come separatori, quindi un testo senza virgolette non poteva contenere né le une né gli altri: lo stesso problema che più tardi le virgolette del CSV avrebbero dovuto risolvere. Niente di tutto questo era ancora un formato di file. Era un modo per lasciare che le persone digitassero numeri in fila, separati da virgole, e che il computer capisse dove iniziava ciascuno.
1983: un foglio di calcolo dà un’estensione ai file
I fogli di calcolo dei microcomputer trasformarono l’abitudine in file. La guida di riferimento del 1983 dell’Osborne Executive, un computer portatile da ufficio venduto con SuperCalc di Sorcim, descrive un’utilità di conversione che assegna «.CSV ai file Comma-Separated-Value» e ne illustra la struttura: righe di dati, ognuna terminata da un ritorno a capo e un avanzamento riga, valori separati da virgole, stringhe tra virgolette doppie, che possono contenere virgole, e un Control-Z a segnare la fine del file. La guida aggiunge che quei dati potevano anche essere generati su un mainframe e scaricati sulla scrivania.
La stessa guida enuncia il compromesso che definisce ancora il formato. Le formule non vengono inviate a un file CSV; «vengono inviati solo i valori che compaiono sullo schermo al momento della conversione». Converti un foglio in CSV e ritorno, e le formule sono sparite. Il CSV non è mai stato pensato per sostituire un foglio di calcolo. Era il minimo comune denominatore che permetteva a un foglio di calcolo, a un database, a un programma BASIC e a un mainframe di mettersi d’accordo su righe e colonne.
Come funzionano i byte
Un CSV è fatto solo di caratteri. Ogni record è una riga, terminata nella forma classica da ritorno a capo e avanzamento riga (CRLF, i due caratteri di controllo con cui DOS e Windows chiudono una riga), anche se alcuni programmi scrivono solo l’avanzamento riga. I campi sono separati da virgole. Un campo può stare tra virgolette doppie, e deve starci se contiene una virgola, una virgoletta doppia o un a capo; una virgoletta dentro un campo tra virgolette si raddoppia (""). La prima riga può essere un’intestazione con i nomi delle colonne, ma niente nel file dice se lo sia. E niente dice che cosa significhino i valori: 00123, 1-2 e MARCH1 sono solo testo finché un programma non decide altrimenti.
Il file non dice nemmeno quale codifica dei caratteri usi, cioè la corrispondenza tra byte e lettere. I CSV più vecchi erano spesso scritti in una tabella codici a un byte di Windows o DOS adatta alla lingua del computer; quelli più recenti sono di solito in UTF-8, la codifica Unicode su cui funziona il web. Il programma che legge il file deve indovinare: ecco perché il BOM conta per Excel, e perché i nomi con accenti, dieresi o scritture asiatiche sono i primi a rompersi quando un CSV passa da un sistema all’altro.
2005: la RFC 4180 mette le regole per iscritto
All’inizio degli anni Duemila il CSV era ovunque e non era specificato da nessuna parte. Nell’ottobre 2005 l’IETF (Internet Engineering Task Force, l’organismo che elabora gli standard di Internet) pubblicò la RFC 4180, «Common Format and MIME Type for Comma-Separated Values (CSV) Files», scritta da Yakov Shafranovich. L’introduzione è diretta: «Sorprendentemente, benché questo formato sia molto comune, non è mai stato documentato formalmente». Il memorandum descrive «il formato che sembra seguito dalla maggior parte delle implementazioni» (a capo CRLF, una riga di intestazione facoltativa, virgole, regole per le virgolette doppie) e registra text/csv presso la IANA, l’ente che gestisce l’elenco dei tipi di media, con i parametri facoltativi charset e header. Osserva perfino che «alcuni programmi, come Microsoft Excel, non usano affatto le virgolette doppie».
La RFC 4180 è una RFC informativa; dichiara di non specificare «alcuno standard Internet di alcun tipo». Il lavoro successivo si è costruito attorno a essa senza sostituirla: nel 2014 la RFC 7111 ha definito come puntare con un indirizzo web a righe, colonne o celle specifiche di un file text/csv, e un gruppo di lavoro del W3C chiamato CSV on the Web, chiuso nel 2016, ha pubblicato raccomandazioni per descrivere le colonne di un CSV, compresi i loro tipi, in un file di metadati separato. Il CSV in sé continua a non averne.
Quando l’ipotesi sbaglia: geni, date e righe perse
La vittima meglio documentata è la biologia. Nel 2004 Barry Zeeberg e colleghi riferirono su BMC Bioinformatics che le conversioni predefinite di Excel cambiavano i nomi dei geni: l’oncosoppressore DEC1 diventava «1-DEC», e identificatori di cloni RIKEN come 2310009E13 diventavano il numero 2,31E+13, conversioni che definirono irreversibili. Nel 2016 Mark Ziemann, Yotam Eren e Assam El-Osta analizzarono i file Excel supplementari di 18 riviste pubblicati dal 2005 al 2015 e trovarono errori nei nomi dei geni nei file di 704 articoli, il 19,6% degli articoli con elenchi di geni in Excel. Nel 2020 lo HUGO Gene Nomenclature Committee (HGNC), che approva i simboli dei geni umani, pubblicò linee guida che confermavano la modifica, avvenuta nel corso del 2019, di tutti i simboli che venivano convertiti automaticamente in date: SEPT1 ora è SEPTIN1, MARCH1 ora è MARCHF1.
Il CSV è stato anche all’origine di un guasto nella sanità pubblica. Tra il 25 settembre e il 2 ottobre 2020, 15.841 casi positivi di COVID-19 in Inghilterra sono rimasti fuori dai dati giornalieri. Public Health England (PHE) dichiarò che alcuni file avevano superato la dimensione massima accettata dal processo che caricava i risultati nei sistemi centrali. La BBC riferì che le aziende di analisi avevano inviato i risultati come file CSV senza problemi, e che il processo automatico di PHE li riversava in modelli Excel nel vecchio formato XLS, che contiene solo circa 65.000 righe; con più righe per test, ogni modello si riempiva a circa 1.400 casi e il resto veniva escluso.
Alla fine Microsoft ha cambiato il software anziché le impostazioni predefinite. Nell’ottobre 2023 il team di Excel ha annunciato la disponibilità generale delle impostazioni di Conversione automatica dei dati per Windows (versione 2309 o successiva) e Mac (16.77 o successiva), con caselle per gli zeri iniziali, il troncamento a 15 cifre, la lettera E e le «lettere e numeri continui» convertiti in date, oltre a un avviso facoltativo quando un file .csv o .txt sta per essere convertito. Le conversioni restano attive finché non le disattivi.
Conserva il CSV originale
Una volta che Excel ha convertito una colonna e salvi sopra il file, il CSV contiene i valori modificati; il testo originale non si può più recuperare. Lavora su una copia e conserva l’esportazione intatta accanto a ciò che modifichi.
Perché nel 2026 ci sono ancora file .csv sui dischi
Il CSV è sopravvissuto ai sistemi che lo producevano perché era la porta d’uscita. Le banche offrono gli estratti conto in CSV, i vecchi programmi di contabilità e di gestione dei soci esportano così i loro dati, strumenti di laboratorio e registratori di dati lo scrivono, e decenni di migrazioni di database ci sono passati attraverso. Molti di quei file oggi sono file legacy: esportazioni da software che non funziona più, scritte in una vecchia tabella codici, con punti e virgola o virgole a seconda di come era configurato il PC, e piene di CAP, codici articolo e identificativi che un foglio di calcolo moderno reinterpreterà in silenzio al primo doppio clic.
Legacy File Converter elenca i valori separati da virgole (.csv) tra i fogli di calcolo nella pagina Tipi di file supportati e li converte sul tuo PC Windows in XLSX, PDF, Markdown o HTML; non viene caricato nulla, e conta quando l’esportazione contiene dati bancari o dei soci. Dopo, confronta con il file originale colonne come CAP, identificativi lunghi e date. Per altri modi antichi di scambiare dati tra fogli di calcolo, vedi Lezione di storia: Che cos’è un file .dif? e Lezione di storia: Che cos’è un file .slk?; per la cartella di lavoro binaria della vicenda COVID-19, vedi Lezione di storia: Che cos’è un file .xls?.
Letture correlate
Pronto ad aprire i tuoi vecchi file?
Inizia gratis, poi sblocca le conversioni illimitate con una licenza Standard da $79.95 una tantum. Scarica il programma di installazione per Windows: tutte le funzioni per un massimo di 10 file.
Prova gratuita
Tutte le funzioni dell'app · fino a 10 file
Windows 10 o 11
Prova gratuita: converti fino a 10 file. Scarica il programma di installazione per Windows e converti in locale sul tuo PC.
Programma di installazione diretto per Windows · MSI offline
È sicuro? — editore, programma di installazione e aiuto su SmartScreen
Richiede Windows 10 o 11. Nessun abbonamento.