CSV-tabel (.csv)

RFC Standard

Comma-Separated Values (CSV) er et udbredt simpelt tekstformat til tabeldata, hvor hver linje repræsenterer en datapost, og felterne adskilles af afgrænsningstegn.

Konverter XLSX til CSV

Gratis XLSX til CSV-konverter i browseren. Konverter filer med det samme på din enhed.

Komprimér CSV online

Privat - filer forlader aldrig din enhed

Undersøgelse og metadata

Operativsystemer og filanalysatorer identificerer CSV-filer ved at inspicere den indledende binære bytesekvens:

Vælg eller træk filer hertil

Privat - filer forlader aldrig din enhed

eller indsæt Ctrl+V
Privatlivsgaranti uden netværksoverførsel: 0 byte overført til eksterne servere. Al behandling foregik lokalt i browserens sandkasse.

Byte-niveau Header-signatur (Magic Bytes)

Operativsystemer og filanalysatorer identificerer CSV-filer ved at inspicere den indledende binære bytesekvens:

HEX-SIGNATUR (OFFSET 0):

Ingen fast signatur

ASCII-REPRÆSENTATION: Tekstbytes; kodningen kan variere

Standardisering: RFC 4180 / IETF

Tekniske specifikationer

ContainerarkitekturAfgrænsede flade tekstfiler, der repræsenterer tabeldata i rækker og kolonner
KomprimeringGzip og Deflate kan komprimere gentagen tekst; resultatet afhænger af dataene og indstillingerne.
Byte-rækkefølgeUTF-8 tekststrøm (valgfri UTF-8 BOM EF BB BF bruges af Excel)
FarverumIkke relevant
Kanaler og strukturRækkeposter afgrænset af CRLF med kolonner adskilt af kommaer
Maks. dimensionerUbegrænset; kan streames i gigabytestørrelse uden at indlæse hele filen i hukommelsen
GennemsigtighedIkke relevant
Streaming og progressivIndbygget linje-for-linje-streamingsbehandling understøttet af alle datapipelines

Teknisk sammenligningsmatrix: CSV sammenlignet med konkurrenterne

Teknisk attributCSV (Aktuel)Excel (XLSX)ParquetJSON
FiltypeFlad tabel i ren tekstZippet XML-regnearkBinær kolonnelagringHierarkisk tekst
Flere arkNej (kun én flad tabel)Ja (flere arbejdsbøger og ark)Partitionsbaseret lagringindlejrede arrays og objekter
DatatyperUtypiseret råtekstTypiserede celler, formler, formateringStrenge binære kolonnerPrimitiver (streng, tal, boolesk)
Big Data-analyseLangsom (kræver sekventiel læsning af alle rækker)Ikke egnet til store datamængderUltrahurtig (udeladelse af kolonner og nedskubning af prædikater)Moderat

Almindelige korruptionstilstande og hex-gendannelsesvejledning

Kolonnerne rykker mod højre, eller antallet af rækker stemmer ikke overens.

Grundlæggende årsag: Et tekstfelt indeholder et ubeskyttet komma uden omkringliggende anførelsestegn.

Gendannelse: RFC 4180 kræver, at felter, der indeholder kommaer, indkapsles i dobbelte anførelsestegn: "Smith, John".

Accenttegn gengives som mærkelige symboler (mojibake som é i stedet for é) i Excel.

Grundlæggende årsag: Excel åbnede en UTF-8 CSV ud fra en antagelse om ældre Windows ANSI/CP1252-tegnkodning.

Gendannelse: Indsæt det 3-byte store UTF-8 Byte Order Mark (0xEF 0xBB 0xBF) i starten af filen.

Sikkerhedsanalyse og parser-angrebsvektorer

CSV-filer åbnes direkte i regnearksprogrammer som Excel og Google Sheets, hvilket udsætter brugere for formelinjektionsangreb (CSV-injektion).

Kendte angrebsvektorer

  • Formelinjektion: Celler, der starter med '=', '+', '-' eller '@', udfører regnearksmakroer eller DDE-kommandoer (f.eks. '=cmd|' /C calc'!A0').
  • Dataudsivning via HYPERLINK()-formler, der sender følsomme celledata til eksterne angriberes servere, når der klikkes.

Defensive bedste praksisser: Når brugerdata eksporteres til CSV, skal der tilføjes et enkelt citationstegn (') eller tabulator før celler, der starter med '=', '+', '-' eller '@', for at gennemtvinge almindelig tekstudskrivning i Excel.

Historisk oprindelse og milepæle

2015W3C-modellen for tabeldata og metadata på nettet standardiserer CSV på nettet (CSVW) med JSON-LD-metadatabeskrivelser.
2005IETF udgiver RFC 4180, som fastlægger den formelle specifikation for CSV-filer.
1972IBM Fortran (H Extended)-kompileren implementerer kommasepareret input/output.

Vigtige fordele og styrker

  • Maksimal enkelhed: læselig i enhver teksteditor og kan importeres til enhver database og ethvert regneark.
  • Ekstremt hurtig linje-for-linje-streaming uden opbygning af en fuld DOM i hukommelsen.
  • Minimalt overhead: ingen ordrige tag-syntakser eller skemadefinitioner.

Tekniske begrænsninger og ulemper

  • Ingen standarddatatyper: tal, datoer, sandhedsværdier og tekst gemmes alle som rå strenge.
  • Ingen understøttelse af flere ark, celleformatering, formler eller metadata.
  • Afgrænsningskonflikter (kommaer inde i tekst, decimalkommaer i europæiske landestandarder) forårsager hyppige fortolkningsfejl.

Interessante tekniske fakta

  • I mange europæiske lande, hvor kommaer bruges som decimaltegn, bruges semikolon (;) i stedet for kommaer som CSV-separatorer.
  • Microsoft Excel krævede historisk set en UTF-8 BOM (0xEF 0xBB 0xBF) for korrekt at vise accenttegn uden for ASCII.
  • Det britiske sundhedsvæsen (NHS) mistede berømt næsten 16.000 COVID-19-kontaktopsporingsposter i 2020, fordi data blev importeret til et forældet Excel-regnearksformat, der begrænsede rækkerne til 65.536.

Ofte stillede tekniske spørgsmål

Hvad er RFC 4180?

RFC 4180 er den officielle IETF-standard for CSV. Den foreskriver, at felter, der indeholder kommaer, linjeskift eller dobbelte anførelsestegn, skal omsluttes af dobbelte anførelsestegn, og interne anførelsestegn skal escapes ved at fordoble dem ("").

Hvorfor åbner CSV-filer med beskadigede tegn i Excel?

Ældre versioner af Microsoft Excel anvender som standard den lokale Windows-kodning (som Windows-1252) frem for UTF-8, når CSV-filer åbnes direkte. Tilføjelse af en UTF-8 BOM (Byte Order Mark) i starten af filen tvinger Excel til at afkode UTF-8 korrekt.

Hvad er CSV-injektion (formelinjektion)?

CSV-injektion opstår, når ikke-valideret brugerinput med indledende formeltriggere ('=', '+', '-', '@') eksporteres til en regnearksfil. Når filen åbnes i programmer som Excel, udfører regnearket automatisk formlen eller DDE-kommandoen (Dynamic Data Exchange), hvilket potentielt kan køre systemkommandoer eller udsive data.