XLSX vs CSV: wat verandert er
Begrijp voor het converteren wat CSV bewaart en wat het verwijdert:
| Functie | XLSX | CSV |
|---|---|---|
| Celwaarden (tekst, getallen) | Ja | Ja |
| Formules | Ja (opgeslagen) | Nee (alleen berekende waarden) |
| Opmaak (vet, kleuren) | Ja | Nee |
| Meerdere bladen | Ja | Nee (één blad per bestand) |
| Grafieken en afbeeldingen | Ja | Nee |
| Gegevenstypen (datums, valuta) | Ja (getypte cellen) | Alleen platte tekst |
| Bestandsgrootte (1000 rijen) | ~50–200 KB | ~10–50 KB |
| Universele compatibiliteit | Vereist Excel/reader | Elke teksteditor |
Als je alleen de ruwe gegevens nodig hebt — voor databaseimport, gegevensanalyse of platformonafhankelijk delen — is CSV de juiste keuze. Als je opmaak, formules of meerdere bladen wilt bewaren, houd je het XLSX-formaat aan. Wil je een opgemaakte kopie delen die iedereen kan openen, lees dan hoe je Excel naar PDF converteert met behoud van de layout.
Methode 1: Online converter (CleverUtils)
De snelste methode. Geen software om te installeren, werkt op elk apparaat met een browser.
- Ga naar cleverutils.com/xlsx-to-csv
- Klik op Kies XLSX-bestand of sleep je spreadsheet naar het uploadveld
- Klik op Converteer
- Download het resulterende CSV-bestand
Het beste voor: Snelle eenmalige conversies. Geen installatie nodig. Bestanden worden versleuteld geüpload en automatisch verwijderd binnen 2 uur.
Methode 2: Microsoft Excel
Als je Excel al hebt geïnstalleerd, kun je rechtstreeks exporteren:
- Open het
.xlsx-bestand in Excel - Als de werkmap meerdere bladen heeft, klik je op het tabblad van het blad dat je wilt exporteren
- Ga naar Bestand → Opslaan als (of Bestand → Een kopie opslaan in nieuwere versies)
- Selecteer in de vervolgkeuzelijst “Opslaan als type” de optie CSV (gescheiden door komma's) (*.csv)
- Kies de opslaglocatie en klik op Opslaan
- Excel waarschuwt dat sommige functies niet compatibel zijn met CSV — klik op Ja om door te gaan
Excel biedt in het dialoogvenster Opslaan als meerdere CSV-varianten aan:
| Optie | Codering | Scheidingsteken | Het beste voor |
|---|---|---|---|
| CSV (gescheiden door komma's) | Systeemstandaard (vaak Windows-1252) | Komma | Engelstalige gegevens |
| CSV UTF-8 (gescheiden door komma's) | UTF-8 met BOM | Komma | Internationale tekens |
| CSV (Macintosh) | Mac Roman | Komma | Oudere macOS-apps |
| CSV (MS-DOS) | OEM/DOS-codepagina | Komma | Oudere DOS-programma's |
Tip: Kies altijd CSV UTF-8 als je gegevens tekens met accenten, CJK-tekst of andere niet-ASCII-symbolen bevatten. De gewone optie “CSV (gescheiden door komma's)” gebruikt een landspecifieke codering die speciale tekens op andere systemen kan beschadigen.
Methode 3: Google Sheets
Gratis en beschikbaar op elk platform met een browser:
- Open sheets.google.com en upload je XLSX-bestand (Bestand → Openen → Uploaden)
- Google Sheets importeert de werkmap en bewaart de meeste opmaak visueel
- Selecteer het bladtabblad dat je wilt exporteren
- Ga naar Bestand → Downloaden → Door komma's gescheiden waarden (.csv)
- Het huidige blad wordt gedownload als een
.csv-bestand
Google Sheets exporteert CSV altijd in UTF-8-codering, de veiligste keuze voor internationale gegevens. Het scheidingsteken is altijd een komma, ongeacht je landinstellingen.
Methode 4: LibreOffice Calc
LibreOffice is gratis, open-source en beschikbaar op Windows, macOS en Linux. Het geeft je de meeste controle over de CSV-exportinstellingen.
- Open het
.xlsx-bestand in LibreOffice Calc - Ga naar Bestand → Opslaan als
- Selecteer Tekst CSV (.csv) als indeling
- Klik op Tekst CSV-indeling gebruiken wanneer daarom wordt gevraagd
- Configureer in het exportdialoogvenster:
- Tekenset: Unicode (UTF-8)
- Veldscheidingsteken: komma
,(of puntkomma, tab) - Tekstscheidingsteken: dubbele aanhalingstekens
"
- Klik op OK
Batchconversie via de opdrachtregel
LibreOffice ondersteunt de headless-modus (zonder GUI), waardoor het ideaal is voor batchverwerking:
# Converteer één bestand
libreoffice --headless --convert-to csv report.xlsx
# Converteer alle XLSX-bestanden in de huidige map
libreoffice --headless --convert-to csv *.xlsx
# Geef een uitvoermap op
libreoffice --headless --convert-to csv --outdir ./csv-output/ *.xlsx
Opmerking: De headless-modus van LibreOffice exporteert alleen het eerste blad. Gebruik voor werkmappen met meerdere bladen een Python-script (methode 5) of converteer elk blad handmatig.
Methode 5: Python (pandas)
Python met de pandas-bibliotheek is de beste optie voor geautomatiseerde, herhaalbare of batchconversies. Het verwerkt werkmappen met meerdere bladen, codering en aangepaste scheidingstekens van nature.
Basisconversie
import pandas as pd
# Lees het eerste blad en sla op als CSV
df = pd.read_excel("report.xlsx")
df.to_csv("report.csv", index=False, encoding="utf-8-sig")
Converteer alle bladen naar afzonderlijke CSV-bestanden
import pandas as pd
xlsx = pd.ExcelFile("workbook.xlsx")
for sheet_name in xlsx.sheet_names:
df = pd.read_excel(xlsx, sheet_name=sheet_name)
filename = f"{sheet_name}.csv"
df.to_csv(filename, index=False, encoding="utf-8-sig")
print(f"Opgeslagen {filename}")
Meerdere XLSX-bestanden in batch converteren
import pandas as pd
from pathlib import Path
for xlsx_file in Path(".").glob("*.xlsx"):
df = pd.read_excel(xlsx_file)
csv_file = xlsx_file.with_suffix(".csv")
df.to_csv(csv_file, index=False, encoding="utf-8-sig")
print(f"{xlsx_file} → {csv_file}")
Installeren: pip install pandas openpyxl — de openpyxl-engine is vereist voor het lezen van .xlsx-bestanden. Deze wordt automatisch door pandas gebruikt als hij is geïnstalleerd.
Methode 6: Opdrachtregeltools
Voor serveromgevingen, CI/CD-pipelines of gescripte workflows waarbij je geen GUI kunt openen.
ssconvert (Gnumeric)
Een lichte opdrachtregelconverter voor spreadsheets, meegeleverd met Gnumeric:
# Installeren op Ubuntu/Debian
sudo apt install gnumeric
# Converteer één bestand
ssconvert report.xlsx report.csv
# Exporteer alle bladen (maakt report.csv.0, report.csv.1, enz.)
ssconvert -S report.xlsx report.csv
# Converteer alle XLSX-bestanden in batch
for f in *.xlsx; do ssconvert "$f" "${f%.xlsx}.csv"; done
csvkit (in2csv)
Een op Python gebaseerde toolkit speciaal ontworpen voor CSV-bewerkingen:
# Installeren
pip install csvkit
# Converteren (standaard eerste blad)
in2csv report.xlsx > report.csv
# Geef een blad op via naam
in2csv --sheet "Sales Q4" report.xlsx > sales-q4.csv
# Geef alle bladnamen weer
in2csv --names report.xlsx
Veelvoorkomende problemen en oplossingen
Coderingsproblemen (onleesbare tekens)
Het meest voorkomende probleem. Tekens met accenten (é, ü, ñ), CJK-tekst of symbolen zoals € verschijnen als é, ??? of andere onleesbare tekst.
Oorzaak: De CSV is opgeslagen in één codering maar geopend in een andere. Excel op Windows gebruikt standaard de lokale codepagina (bijv. Windows-1252 voor West-Europese talen), niet UTF-8.
Oplossing:
- Sla altijd op als UTF-8 met BOM (byte order mark). De BOM geeft Excel en andere toepassingen aan dat het bestand UTF-8 is.
- In Python: gebruik
encoding="utf-8-sig"(UTF-8 met BOM) in plaats vanencoding="utf-8" - Bij het openen van een CSV in Excel: gebruik de importwizard Gegevens → Uit tekst/CSV, waarmee je de codering kunt selecteren voor het importeren
Problemen met scheidingstekens
Sommige Europese landinstellingen gebruiken puntkomma's (;) in plaats van komma's als CSV-scheidingsteken, omdat komma's in die landinstellingen als decimaalteken worden gebruikt (bijv. 1.234,56 in het Nederlands).
Symptomen: Alle gegevens verschijnen in één kolom bij opening in Excel, of numerieke waarden worden over meerdere kolommen verdeeld.
Oplossing:
- Controleer je systeeminstellingen: Windows-gebruikers met Nederlandse, Duitse, Franse of Italiaanse landinstellingen hebben mogelijk puntkomma's nodig
- In Python:
df.to_csv("file.csv", sep=";")voor uitvoer met puntkomma's als scheidingsteken - In LibreOffice: stel het veldscheidingsteken expliciet in tijdens de export
- Bij het importeren: gebruik de tekstimportwizard en geef het juiste scheidingsteken op
Werkmappen met meerdere bladen
Het CSV-formaat ondersteunt precies één blad per bestand. Bij het converteren van een XLSX-werkmap met meerdere bladen exporteren de meeste tools alleen het eerste (actieve) blad.
Oplossing:
- Exporteer elk blad afzonderlijk met het bovenstaande Python-script voor meerdere bladen
- Gebruik
ssconvert -S, dat automatisch genummerde CSV-bestanden aanmaakt voor elk blad - Schakel in Excel of Google Sheets handmatig van tabblad en exporteer elk blad apart
Datum- en getalopmaak
Datums en getallen kunnen veranderen bij conversie naar CSV, omdat CSV geen gegevenstypen kent. Een datum zoals 2026-03-24 kan 46108 worden (Excel-serienummer) of 24-3-2026 (landafhankelijke indeling).
Oplossing:
- Maak datumkolommen op als tekst in de gewenste indeling voor het exporteren (bijv.
YYYY-MM-DDvoor ISO 8601) - In Python:
df.to_csv(..., date_format="%Y-%m-%d") - Verwijder voor getallen duizendtalscheidingstekens en zorg voor een consistente decimaalnotatie
Welke methode moet je gebruiken?
| Methode | Snelheid | Meerdere bladen | Coderingsbeheer | Batch | Het beste voor |
|---|---|---|---|---|---|
| CleverUtils | Direct | Eerste blad | Vast (geen opties) | Nee | Snelle eenmalige conversies |
| Excel | Snel | Handmatig per blad | 4 opties | Nee | Desktopgebruikers met Excel |
| Google Sheets | Gemiddeld | Handmatig per blad | Alleen UTF-8 | Nee | Chromebook / geen desktopapp |
| LibreOffice | Snel | Eerste blad (CLI) | Volledige controle | Ja (CLI) | Linux-gebruikers, batch via CLI |
| Python | Snel | Alle bladen | Volledige controle | Ja | Ontwikkelaars, automatisering |
| CLI (ssconvert) | Snel | Alle bladen (-S) | Standaard UTF-8 | Ja | Servers, CI/CD-pipelines |
Elk blad van een werkmap naar CSV exporteren
Excel slaat alleen het actieve blad op als CSV. Om op Windows alle bladen tegelijk te exporteren, voer je deze macro uit (druk op Alt+F11, kies Invoegen → Module, plak de code en druk op F5). Elk blad wordt in UTF-8 opgeslagen als Bladnaam.csv naast de werkmap.
Sub ExportSheetsToCSV()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Copy
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & ws.Name & ".csv", xlCSVUTF8
ActiveWorkbook.Close False
Next ws
End Sub