# Kommagescheiden bestand

Een kommagescheiden bestand, of CSV-bestand, in het Engels comma-separated values, is een specificatie voor tabelbestanden. De term moet niet te letterlijk genomen worden, want varianten, zoals met een puntkomma als scheidingsteken, worden ook zo genoemd.
Het CSV-formaat is een eenvoudig en oud databaseformaat. Het bestaat enkel uit tekstgegevens, waardoor het gemakkelijk geïmplementeerd (lezen en/of schrijven) kan worden en een brede verspreiding kent. Waarden worden in principe gescheiden door komma's, en regels door het nieuweregelteken.
Dit soort bestanden wordt vaak gebruikt om de inhoud op te slaan van logboeken, firewalls of tabellen met daarin de gegevens van mutaties of transacties (zoals die op een bankrekening of met een OV-chipkaart).
Deze gegevens kunnen in een rekenblad- of een databaseprogramma worden ingelezen voor presentatie op een beeldscherm als tabel, en voor verdere verwerking.
Instanties die overzichten van transacties beschikbaar stellen aan klanten, bijvoorbeeld banken en openbaarvervoerbedrijven, bieden vaak de keus tussen pdf en csv. Pdf geeft één vast overzicht, csv kan met behulp van de genoemde programma's ook gebruikt worden voor selectie, sortering, berekeningen, enz.

## Voorbeeld

| jaar | merk | type | omschrijving | prijs |
| 1997 | Ford | E350 | airco, abs, moon | 3000,00 |
| 1999 | Chevy | Type "Extended Edition" | | 4900,00 |
| 1996 | Jeep | Grand Cherokee | IS VERKOCHT! air, moon roof, loaded | 4799,00 |
De bovenstaande tabel in een rekenblad kan met de optie "celinhoud opslaan als weergegeven" worden opgeslagen als het volgende CSV-bestand:
Het bovenstaande illustreert de volgende regels:
* Velden met een komma, aanhalingstekens (") of regel-einden, en velden die met een spatie beginnen of eindigen, worden omsloten door aanhalingstekens.
* Aanhalingstekens binnen een veld worden verdubbeld.
Aanhalingstekens om getallen met cijfers achter de komma zijn niet nodig als een puntkomma als scheidingsteken wordt gebruikt.
Bij het laden van dit bestand met de optie "Veld met aanhalingsteken als tekst opmaken" uitgevinkt geeft weer de bovenstaande tabel, met de laatste kolom van het type getal, met dien verstande dat deze dan nog verder moet worden opgemaakt door aan te geven dat twee cijfers achter de komma gewenst zijn.
De precieze werking, waaronder de beschikbaarheid en details van de opties, kunnen van het rekenbladprogramma afhangen.
Het opslaan als CSV-bestand van een rekenblad met een kolom met opmaak valuta kan met de optie "celinhoud opslaan als weergegeven" niet direct omkeerbaar zijn. Dit doet zich voor als bij het teruglezen van het CSV-bestand een bedrag met bijvoorbeeld een euroteken als tekst wordt opgevat.

## Varianten

Nederlandstalige spreadsheet-programma's gebruiken vaak de puntkomma als scheidingsteken, omdat de komma als decimaalteken en eventueel de punt als cijfergroeperingssymbool (duizend-separator) wordt gebruikt. Dit voorkomt dat er steeds aanhalingstekens om geldbedragen nodig zijn.
Spreadsheet-programma's zijn vaak voorzien van een wizard die helpt bij het inlezen van tekstbestanden waar de kolommen door een bepaald teken zijn gescheiden. Onder het voorbeeld is te zien hoe bijvoorbeeld een komma in een getal wordt 'behandeld' in een kommagescheiden bestand.
Bij het op het klembord kopiëren van een gerenderde html-tabel en plakken in een teksteditor ontstaat een variant van een kommagescheiden bestand, met het tab-karakter als scheidingsteken. Zowel bij rechtstreeks plakken van het klembord als bij het plakken van dit bestand in een spreadsheet, wordt de tabel daarnaar overgebracht.
In sommige code en tekst editors zoals Visual Studio Code, IntelliJ, Notepad++, CudaText wordt syntax highlighting voor CSV bestanden ondersteund. Hierdoor krijgt de tekst van elke kolom een andere keur zodat de gegevens makkelijker te lezen en te bewerken zijn, zonder het te hoeven openen in een spreadsheet programma.

## Nieuweregelteken

Soms worden in een kommagescheiden bestand tabelregels slechts gescheiden door line feed, terwijl dat bestand gebruikt wordt voor het overbrengen van een tabel naar een systeem dat carriage return line feed vereist als nieuweregelteken. Bekeken in een teksteditor staan de tabelregels dan niet op aparte regels. Voor het spreadsheetprogramma is de linefeed vaak toch voldoende, zodat de overbrenging wel werkt.

## Tekenset

Als tekenset wordt vaak UTF-8 gebruikt. Voor het nieuweregelteken, de komma of ander gebruikelijk scheidingsteken, de aanhalingstekens en de getallen maakt het niet uit of UTF-8, Windows-1252 (ANSI) of ISO-8859-1 wordt gebruikt, maar voor teksten waar bijvoorbeeld een euroteken of letters met diakritische tekens voorkomen wel. In een programma dat een csv-bestand laadt kan vaak aangegeven worden welke tekenset gebruikt is.