Legacy File Converter-logoLegacy File Converter
Historielektion8 min. læsning

Historielektion: Hvad er en .csv-fil? Hvorfor Excel ændrer dine data, når den åbner en

Kommaseparerede værdier – tabellen i ren tekst, der voksede ud af 1970’ernes FORTRAN og de tidlige regneark, først blev beskrevet i RFC 4180 i 2005 og stadig mister foranstillede nuller og gennavne, hver gang et regneark gætter på, hvad teksten betyder.

·Af Legacy File Converter-teamet
En listepapirsudskrift med kolonner, en mainframe-båndspole og hulkort, der flyder ind i et lysende regnearksgitter på en bærbar computer, ingen logoer

TL;DR

En .csv-fil indeholder kommaseparerede værdier (comma-separated values): en tabel skrevet som ren tekst, én post pr. linje, kommaer mellem felterne og dobbelte anførselstegn om ethvert felt, der indeholder et komma, et anførselstegn eller et linjeskift. Idéen er ældre end pc’en – IBM’s FORTRAN-oversættere læste i 1972 kommasepareret input fra terminaler og hulkort – og i 1983 gemte regnearksprogrammer allerede filer med endelsen .CSV. Ingen skrev reglerne formelt ned før RFC 4180 i oktober 2005, som også registrerede MIME-typen text/csv. Fordi en CSV hverken har kolonnetyper, formler eller en angivelse af kodningen, må ethvert program, der åbner den, gætte – og Excels gæt er grunden til, at foranstillede nuller forsvinder, gennavne bliver til datoer, og hele filen nogle gange ender i én kolonne.

Hvad er en .csv-fil?

Åbn en CSV i Notesblok, og intet er skjult: linjer af tekst, hver linje en post, hvert komma et kolonneskift. Et felt, der skal indeholde et komma, sættes i dobbelte anførselstegn, og et anførselstegn inde i et sådant felt skrives to gange. Det er hele formatet. Der er ingen header-blok, ingen liste over kolonnetyper, ingen formler og ingen formatering – kun værdierne, sådan som et program skrev dem. Den enkelhed er grunden til, at næsten enhver database, ethvert regneark, regnskabsprogram, bank og programmeringssprog kan læse og skrive CSV, og til at det stadig er reserveformatet for de fleste dataeksporter og -importer.

Hvorfor roder Excel min CSV sammen?

Fordi en CSV ikke kan sige, hvad dens værdier er, bestemmer Excel selv. Microsofts egen dokumentation oplister de automatiske konverteringer, Excel som standard udfører, når tekst skrives, indsættes eller indlæses: Den fjerner foranstillede nuller og gør resten til et tal (00123 bliver 123 – sådan mister postnumre og medarbejdernumre deres første ciffer); den beholder kun de første 15 cifre i lange tal og viser dem måske i videnskabelig notation (de sidste cifre i et kort- eller kontonummer bliver til nuller); den læser cifre omkring bogstavet E som en eksponent (123E5 bliver 1,23E+07); og den gør datolignende tekst som JAN1 til en dato. Gemmer du derefter arket som CSV igen, er det de konverterede værdier, der skrives.

Den anden overraskelse er afgrænseren. Når Excel gemmer eller åbner en CSV, bruger den listeseparatoren fra Windows’ områdeindstillinger. I store dele af det kontinentale Europa – også Danmark – er kommaet decimaltegn (3,14), så listeseparatoren er semikolon, og Microsofts vejledning bekræfter sammenhængen: At sætte decimaltegnet til komma »tvinger Excel til at bruge semikolon som listeseparator«. En fil gemt i København er derfor ofte fuld af semikoloner, og en kommasepareret fil fra et amerikansk system kan åbne med hver række mast ind i kolonne A. Tegnkodningen er den tredje fælde: Microsoft bemærker, at en UTF-8-CSV kun åbner normalt, hvis den er gemt med byte order mark (BOM) – nogle få usynlige bytes i starten, der annoncerer kodningen; uden den kan æ, ø og å blive til volapyk, medmindre du importerer filen og vælger UTF-8.

Åbn en CSV uden gætteri

I stedet for at dobbeltklikke kan du i Excel vælge Data > Hent data > Fra tekst/CSV, kontrollere afgrænser og filoprindelse (kodning) og sætte kolonner som postnumre, kontonumre eller gensymboler til Tekst, før du indlæser. Nyere Excel-versioner lader dig også slå enkelte konverteringer fra under Filer > Indstillinger > Data > Automatisk datakonvertering.

1972: kommaer i stedet for kortkolonner

Før CSV havde et navn, havde det en grund. Data til 1960’ernes mainframeprogrammer blev typisk stanset i faste kolonner på 80-kolonners hulkort, og et FORTRAN-program skulle have en FORMAT-sætning, der angav præcis, hvilke kolonner der indeholdt hvilket tal; en værdi stanset én kolonne forkert blev læst forkert. IBM’s FORTRAN IV-programprodukter til styresystemerne OS og VM/370, beskrevet i en generel informationsmanual dateret juli 1972, tilbød et alternativ kaldet listestyret input/output. Manualen forklarer, at inputværdier »adskilles af mellemrum eller kommaer, hvor på hinanden følgende kommaer angiver udeladte værdier«, og at programmørens bekymring »for dataopstilling og bestemte kortkolonner« forsvinder. IBM listede det dengang blandt sine udvidelser af standardsproget.

Listestyret input blev en del af standardsproget med FORTRAN 77, godkendt i 1978. Det accepterede kommaer eller mellemrum som skilletegn, så en tekst uden anførselstegn kunne ikke indeholde nogen af dem – præcis det problem, CSV’s anførselstegn senere skulle løse. Intet af det var endnu et filformat. Det var en måde at lade folk taste tal efter hinanden, adskilt af kommaer, og lade computeren finde ud af, hvor hvert tal begyndte.

1983: et regneark giver filerne en endelse

Mikrocomputernes regneark gjorde vanen til filer. Referencemanualen fra 1983 til Osborne Executive, en bærbar kontorcomputer, der blev leveret med Sorcims SuperCalc, beskriver et konverteringsværktøj, der giver ».CSV for Comma-Separated-Value-filer«, og forklarer opbygningen: datarækker, hver afsluttet med vognretur og linjeskift, kommaseparerede værdier, tekststrenge i dobbelte anførselstegn – som må indeholde kommaer – og et Control-Z som markering af filens slutning. Manualen tilføjer, at sådanne data også kunne dannes på en mainframe og hentes ned til skrivebordet.

Samme manual beskriver det kompromis, der stadig definerer formatet. Formler sendes ikke til en CSV-fil; »kun de værdier, der vises på skærmen på konverteringstidspunktet«, sendes. Konvertér et ark til CSV og tilbage, og formlerne er væk. CSV var aldrig tænkt som en erstatning for et regneark. Det var den mindste fællesnævner, der lod et regneark, en database, et BASIC-program og en mainframe blive enige om rækker og kolonner.

Sådan fungerer bytes

En CSV består kun af tegn. Hver post er en linje, klassisk afsluttet med vognretur og linjeskift (CRLF, de to kontroltegn, DOS og Windows bruger til at afslutte en linje), selv om nogle programmer kun skriver et linjeskift. Felter adskilles af kommaer. Et felt kan stå i dobbelte anførselstegn og skal det, hvis det indeholder et komma, et anførselstegn eller et linjeskift; et anførselstegn inde i et sådant felt fordobles (""). Den første linje kan være en header med kolonnenavne, men intet i filen siger, om den er det. Og intet siger, hvad værdierne betyder: 00123, 1-2 og MARCH1 er bare tekst, indtil et program beslutter noget andet.

Filen fortæller heller ikke, hvilken tegnkodning den bruger – koblingen mellem bytes og bogstaver. Ældre CSV’er blev ofte skrevet i en enkeltbytes tegntabel fra Windows eller DOS, der passede til computerens sprog; nyere er som regel UTF-8, den Unicode-kodning, internettet kører på. Programmet, der læser filen, må gætte – derfor betyder BOM noget for Excel, og derfor er navne med accenter, æ, ø, å eller asiatiske skrifttegn de første, der går i stykker, når en CSV flytter mellem systemer.

2005: RFC 4180 skriver reglerne ned

I starten af 2000’erne var CSV overalt og specificeret ingen steder. I oktober 2005 udgav IETF (Internet Engineering Task Force, organet der udvikler internetstandarder) RFC 4180, »Common Format and MIME Type for Comma-Separated Values (CSV) Files«, skrevet af Yakov Shafranovich. Indledningen er ligefrem: »Overraskende nok er dette format, selv om det er meget almindeligt, aldrig blevet formelt dokumenteret.« Notatet beskriver »det format, som de fleste implementeringer synes at følge« – CRLF-linjeskift, en valgfri header-linje, kommaer, regler for dobbelte anførselstegn – og registrerer text/csv hos IANA, organet der fører listen over medietyper, med de valgfri parametre charset og header. Det bemærker endda, at »nogle programmer, såsom Microsoft Excel, slet ikke bruger dobbelte anførselstegn«.

RFC 4180 er en informativ RFC; den skriver selv, at den »ikke fastlægger nogen internetstandard af nogen art«. Senere arbejde byggede rundt om den i stedet for at erstatte den: I 2014 definerede RFC 7111, hvordan en webadresse kan pege på bestemte rækker, kolonner eller celler i en text/csv-fil, og en W3C-arbejdsgruppe ved navn CSV on the Web, der blev lukket i 2016, udgav anbefalinger til at beskrive en CSV’s kolonner – herunder deres typer – i en separat metadatafil. Selve CSV-filen har stadig ingen.

Når gættet slår fejl: gener, datoer og tabte rækker

Det bedst dokumenterede offer er biologien. I 2004 rapporterede Barry Zeeberg og kolleger i BMC Bioinformatics, at Excels standardkonverteringer ændrede gennavne: Tumorsuppressoren DEC1 blev til »1-DEC«, og RIKEN-kloneidentifikatorer som 2310009E13 blev til tallet 2,31E+13 – konverteringer, de kaldte irreversible. I 2016 gennemgik Mark Ziemann, Yotam Eren og Assam El-Osta supplerende Excel-filer fra 18 tidsskrifter udgivet 2005–2015 og fandt fejl i gennavne i filer fra 704 artikler – 19,6 % af artiklerne med genlister i Excel. I 2020 udgav HUGO Gene Nomenclature Committee (HGNC), som godkender menneskelige gensymboler, retningslinjer, der bekræftede, at alle symboler, der automatisk blev til datoer, var blevet ændret i løbet af 2019: SEPT1 hedder nu SEPTIN1, og MARCH1 hedder nu MARCHF1.

CSV lå også i starten af en fejl i sundhedsvæsenet. Mellem 25. september og 2. oktober 2020 manglede 15.841 positive COVID-19-tilfælde i England i de daglige tal. Public Health England (PHE) oplyste, at nogle filer havde overskredet den maksimale filstørrelse i den proces, der indlæste resultaterne i de centrale systemer. BBC rapporterede, at testfirmaerne havde leveret deres resultater som CSV-filer uden problemer, men at PHE’s automatiske proces hældte dem over i Excel-skabeloner i det gamle XLS-format, der kun rummer omkring 65.000 rækker; med flere rækker pr. test blev hver skabelon fyldt ved omkring 1.400 tilfælde, og resten faldt ud.

Microsoft ændrede til sidst softwaren frem for standardindstillingerne. I oktober 2023 annoncerede Excel-teamet, at indstillinger for automatisk datakonvertering var generelt tilgængelige til Windows (version 2309 eller nyere) og Mac (16.77 eller nyere), med afkrydsningsfelter for foranstillede nuller, afkortning til 15 cifre, bogstavet E og »sammenhængende bogstaver og tal« til datoer samt en valgfri advarsel, når en .csv- eller .txt-fil er ved at blive konverteret. Konverteringerne forbliver slået til, indtil du slår dem fra.

Behold den originale CSV

Når Excel har konverteret en kolonne, og du gemmer oven i filen, indeholder CSV’en de ændrede værdier; den oprindelige tekst kan ikke genskabes derfra. Arbejd på en kopi, og gem den uberørte eksport ved siden af det, du redigerer.

Hvorfor .csv-filer stadig ligger på diske i 2026

CSV har overlevet de systemer, der lavede filerne, fordi det var nødudgangen. Banker tilbyder kontoudtog som CSV, gamle regnskabs- og medlemsprogrammer eksporterer deres poster på den måde, laboratorieudstyr og dataloggere skriver det, og årtiers databasemigreringer er gået igennem det. Mange af de filer er i dag legacy-filer: eksporter fra software, der ikke længere kører, skrevet i en gammel tegntabel, med semikoloner eller kommaer alt efter hvordan pc’en var sat op, og fulde af postnumre, varenumre og id’er, som et moderne regneark stille og roligt vil fortolke om ved første dobbeltklik.

Legacy File Converter opfører kommaseparerede værdier (.csv) blandt regnearksformaterne på siden Understøttede filtyper og konverterer dem på din egen Windows-pc til XLSX, PDF, Markdown eller HTML – intet uploades, hvilket betyder noget, når eksporten indeholder bank- eller medlemsdata. Kontrollér bagefter kolonner som postnumre, lange id’er og datoer mod den originale fil. Om andre tidlige måder at udveksle regnearksdata på, se Historielektion: Hvad er en .dif-fil? og Historielektion: Hvad er en .slk-fil?; om den binære projektmappe fra COVID-19-historien, se Historielektion: Hvad er en .xls-fil?.

Klar til at åbne dine gamle filer?

Start gratis, og lås derefter op for ubegrænset konvertering med en Standard-licens til $79.95 én gang. Download Windows-installationsprogrammet – alle funktioner til op til 10 filer.

Gratis prøveversion

Alle programmets funktioner · op til 10 filer

Windows 10 eller 11

Gratis prøveversion – konvertér op til 10 filer. Download Windows-installationsprogrammet, og konvertér lokalt på din pc.

Start den gratis prøveversion – download installationsprogrammet

Direkte Windows-installationsprogram · offline MSI

Er det sikkert? — udgiver, installationsprogram og hjælp til SmartScreen

Køb Standard – $79.95

Kræver Windows 10 eller 11. Ingen abonnementer.