CSV-tabell (.csv)

RFC Standard

Comma-Separated Values (CSV) är ett allmänt förekommande textformat för tabelldata, där varje rad representerar en datapost och fält skiljs åt av avgränsare.

Konvertera XLSX till CSV

Gratis konverterare från XLSX till CSV i webbläsaren. Konvertera filer direkt på din enhet.

Komprimera CSV online

Privat - filer lämnar aldrig din enhet

Granska och metadata

Operativsystem och filanalysverktyg identifierar CSV-filer genom att granska den inledande sekvensen av binära byte:

Välj eller släpp filer här

Privat - filer lämnar aldrig din enhet

eller klistra in Ctrl+V
Integritetsgaranti utan nätverksöverföring: 0 byte laddades upp till externa servrar. All bearbetning skedde lokalt i webbläsarens sandlåda.

Signatur i filhuvudet på bytenivå (magiska byte)

Operativsystem och filanalysverktyg identifierar CSV-filer genom att granska den inledande sekvensen av binära byte:

HEX-SIGNATUR (OFFSET 0):

Ingen fast signatur

ASCII-REPRESENTATION: Textdata i byte; kodningen varierar (ofta UTF-8)

Standardisering: RFC 4180 / IETF

Tekniska specifikationer

ContainerarkitekturAvgränsad textfil som representerar tabulära data med rader och kolumner
KomprimeringGzip och Deflate kan komprimera repetitiv text; den resulterande storleken beror på data och inställningar
ByteordningUTF-8-textström (valfri UTF-8-BOM EF BB BF som används av Excel)
FärgrymderEj tillämpligt
Kanaler och strukturRadposter avgränsade med CRLF där kolumner åtskiljs av kommatecken
Maximala dimensionerObegränsat; kan strömmas i gigabyte utan att hela filen läses in i minnet
TransparensEj tillämpligt
Strömning och progressiv visningInbyggd rad-för-rad-strömningsbearbetning som stöds av alla datapipelines

Teknisk jämförelsematris: CSV jämfört med konkurrenter

Tekniskt attributCSV (Aktuell)Excel (XLSX)ParquetJSON
FiltypEnkel textbaserad platt tabellZippat XML-kalkylbladBinär kolumnlagringHierarkisk text
Flera bladNej (endast en enskild platt tabell)Ja (flera arbetsböcker och blad)Partitionsbaserad lagringNästlade matriser och objekt
DatatyperOtypad råtextTypade celler, formler, formateringStrikta binära kolumntyperPrimitiva typer (sträng, tal, boolesk)
Analys av stora datamängderLångsam (kräver linjär läsning av varje rad)Inte lämpligt för stora datamängderUltrasnabb (kolumnbortval och predikatpushdown)Måttlig

Vanliga skadeorsaker och hex-återställningsguide

Kolumner förskjuts åt höger eller radantalet stämmer inte överens.

Grundorsak: Ett textfält med ett kommatecken som inte omges av citattecken.

Återställning: RFC 4180 kräver att fält som innehåller kommatecken omges av dubbla citattecken: "Smith, John".

Diakritiska tecken visas som konstiga symboler (teckenförvanskning som é i stället för é) i Excel.

Grundorsak: Excel öppnade en UTF-8-CSV med antagandet att det rörde sig om den äldre Windows ANSI/CP1252-teckenkodningen.

Återställning: Lägg till den tre byte långa UTF-8 Byte Order Mark (0xEF 0xBB 0xBF) i början av filen.

Säkerhetsanalys och attackvektorer för tolkar

CSV-filer öppnas direkt i kalkylbladsprogram som Excel och Google Sheets, vilket utsätter användare för formelinjektionsattacker (CSV-injektion).

Kända attackvektorer

  • Formelinjektion: Celler som börjar med '=', '+', '-' eller '@' kan köra kalkylbladsmakron eller DDE-kommandon (t.ex. '=cmd|' /C calc'!A0').
  • Dataexfiltrering via HYPERLINK()-formler som skickar känsliga celldata till angriparens externa servrar när någon klickar på dem.

Rekommenderade skyddsåtgärder: När du exporterar användardata till CSV, lägg till ett enkelt citattecken (') eller ett tabbtecken framför varje cell som börjar med '=', '+', '-' eller '@' så att Excel visar innehållet som oformaterad text.

Historiskt ursprung och milstolpar

2015W3C Model for Tabular Data and Metadata on the Web standardiserar CSV on the Web (CSVW) med JSON-LD-metadatabeskrivningar.
2005IETF publicerar RFC 4180, vilket fastställer den formella specifikationen för CSV-filer.
1972IBM Fortran (H Extended)-kompilatorn implementerar kommateckenavgränsad indata/utdata.

Viktiga fördelar

  • Maximal enkelhet: läsbar i valfri textredigerare och importerbar till varje databas och kalkylblad.
  • Extremt snabb rad-för-rad-strömning utan att bygga upp en fullständig DOM i minnet.
  • Minimalt extraarbete: ingen mångordig taggsyntax eller schemadefinitioner.

Tekniska begränsningar

  • Inga standardiserade datatyper: tal, datum, booleska värden och text lagras alla som råa strängar.
  • Inget stöd för flera blad, cellformatering, formler eller metadata.
  • Konflikter med avgränsare (kommatecken i text och decimaltecken i europeiska språkområden) orsakar ofta tolkningsfel.

Intressant teknisk kuriosa

  • I många europeiska länder där kommatecken används som decimaltecken används semikolon (;) i stället för kommatecken som CSV-avgränsare.
  • Microsoft Excel krävde historiskt sett en UTF-8-BOM (0xEF 0xBB 0xBF) för att visa accenttecken som inte ingår i ASCII korrekt.
  • Storbritanniens nationella hälsovård (NHS) förlorade känt nog nästan 16 000 covid-19-smittspårningsposter år 2020 eftersom data importerades till ett utdaterat Excel-kalkylbladsformat som hade en radgräns på 65 536.

Vanliga tekniska frågor

Vad är RFC 4180?

RFC 4180 är IETF:s officiella standard för CSV. Den föreskriver att fält som innehåller kommatecken, radbrytningar eller dubbla citattecken måste omslutas av dubbla citattecken, och interna citattecken måste dubbleras ("").

Varför visas förvanskade tecken i CSV-filer som öppnas i Excel?

Äldre versioner av Microsoft Excel använder som standard den lokala Windows-kodsidan (som Windows-1252) snarare än UTF-8 när CSV-filer öppnas direkt. Att lägga till en UTF-8 BOM (Byte Order Mark) i början av filen gör att Excel avkodar UTF-8 korrekt.

Vad är CSV-injektering (formelinjektering)?

CSV-injektering uppstår när otillförlitliga användaruppgifter med tecken som inleder en formel ('=', '+', '-', '@') exporteras till en kalkylbladsfil. När filen öppnas i program som Excel kör kalkylbladet automatiskt formeln eller DDE-kommandot (Dynamic Data Exchange), vilket kan leda till att systemkommandon körs eller data stjäls.