Handleidingen

CSV-bestand te groot voor Excel? Zo open je het hele bestand

Door het Opener-team6 min lezen

Een Excel-werkblad kan maximaal 1.048.576 rijen en 16.384 kolommen bevatten, dus een export van 3 miljoen rijen past er gewoon niet in – Excel laadt het eerste deel, geeft een waarschuwing en laat de rest liggen. Om het hele bestand te zien, open je het in een tool zonder die grens, zoals de CSV-viewer, laad je het in het gegevensmodel van Excel in plaats van in een werkblad, splits je het op, of analyseer je het met Python of een database.

Waarom Excel het bestand afkapt

Een CSV-bestand heeft zelf geen maximale grootte. Het is platte tekst: één regel per rij, met waarden gescheiden door komma’s of puntkomma’s (is dat nieuw voor je, lees dan wat een CSV-bestand is). Excel zet alles wat je opent echter in een werkblad, en een werkblad heeft een vast raster: 1.048.576 rijen bij 16.384 kolommen (kolom XFD).

Is het bestand groter dan dat raster, dan meldt Excel dat het bestand niet volledig is geladen en houdt het alleen de rijen die passen. De koprij plus 1.048.575 datarijen komen erin; vanaf rij 1.048.577 is alles verdwenen uit wat je op het scherm ziet.

Google Sheets biedt hier geen uitweg. Daar geldt een limiet van 10 miljoen cellen per spreadsheet, opgeteld over alle werkbladen. Een bestand met 3 miljoen rijen en 10 kolommen is al 30 miljoen cellen, dus ook dat lukt niet.

Het echte risico: opslaan kost je data

De waarschuwing klik je makkelijk weg, en wat er op het scherm overblijft, ziet eruit als een volkomen normale tabel. Het gevaar komt later:

Heeft Excel de waarschuwing al getoond, sluit het bestand dan zonder op te slaan en laat de oorspronkelijke export onaangeroerd. Controleer daarna hoe groot het bestand echt is voordat je beslist wat je doet.

Optie 1: open het hele bestand in je browser

Wil je de data vooral bekijken – een paar records checken, een klant zoeken, zien wat er in een kolom staat – dan is een viewer zonder rasterlimiet de snelste route.

De CSV-viewer van Opener leest het bestand in je browser en uploadt het nooit, en dat telt als de export klant- of financiële gegevens bevat. Het inlezen gebeurt in een achtergrondthread en alleen de rijen op je scherm worden getekend, dus een bestand van 200.000 rijen opent in ongeveer een seconde en bestanden met miljoenen rijen werken op een gewone laptop. De praktische grens is het geheugen van je apparaat, geen vast aantal rijen.

Is het bestand open, dan kun je:

Dat laatste is een handige truc: filter 3 miljoen rijen terug tot de 40.000 die over één regio gaan, exporteer die, en het kleinere bestand opent zonder waarschuwing in Excel. De viewer voert geen formules, draaitabellen of grafieken uit; daarvoor lees je verder.

Optie 2: laad het in het gegevensmodel van Excel

Recente desktopversies van Excel kunnen een CSV importeren via Power Query (de route Gegevens ophalen / Van tekst/CSV op het tabblad Gegevens) in plaats van het bestand rechtstreeks te openen. Het verschil zit in waar de data terechtkomt.

Laad het resultaat niet in een werkblad, maar kies ervoor het alleen als verbinding te laden en toe te voegen aan het gegevensmodel. Het gegevensmodel slaat de data gecomprimeerd op, buiten het raster, en is dus niet gebonden aan de grens van 1.048.576 rijen. Daarna kun je er een draaitabel op bouwen en alle 3 miljoen rijen samenvatten – totalen per maand, aantallen per categorie, enzovoort.

Het nadeel: je kunt niet door de rijen scrollen zoals in een gewoon werkblad, en de precieze menunamen verschillen per Excel-versie. Het is de beste optie als je in Excel wilt blijven en het eindresultaat een samenvatting is in plaats van een overzicht per rij.

Optie 3: tellen, bekijken en splitsen via de opdrachtregel

Op macOS, Linux of Windows met WSL beantwoorden een paar standaardopdrachten de vragen “hoe groot is het?” en “wat staat erin?” in seconden, zonder het bestand ergens in te laden:

wc -l export.csv              # aantal regels
head -n 20 export.csv         # eerste 20 regels
head -n 100000 export.csv > sample.csv   # een kleinere steekproef om mee te oefenen

Let op: wc -l telt regels, geen rijen. Bevatten sommige waarden regeleinden binnen aanhalingstekens (adressen en opmerkingen hebben die vaak), dan ligt het aantal regels hoger dan het aantal rijen.

Zo splits je het bestand in stukken die Excel kan openen, elk met een eigen koprij:

tail -n +2 export.csv | split -l 1000000 - part_
for f in part_*; do
  { head -n 1 export.csv; cat "$f"; } > "$f.csv" && rm "$f"
done

Splitsen is prima voor snelle controles, maar pas op voor hetzelfde probleem met regeleinden binnen aanhalingstekens: split knipt per regel en kan een waarde over meerdere regels middendoor breken. En werken met vier losse werkmappen is onhandig als je totalen over alles nodig hebt.

Optie 4: analyseer het met pandas, SQLite of DuckDB

Ga je rekenen, koppelen of aggregeren, dan is een echte datatool het eerlijke antwoord. Al deze tools kunnen tientallen miljoenen rijen aan op een gewone laptop.

Python met pandas leest het hele bestand in het geheugen:

import pandas as pd

df = pd.read_csv("export.csv")
print(len(df))
print(df.groupby("region")["amount"].sum())

Is het bestand groter dan je werkgeheugen, lees het dan in stukken:

total = 0
for chunk in pd.read_csv("export.csv", chunksize=500_000):
    total += chunk["amount"].sum()

DuckDB kan een CSV-bestand direct met SQL bevragen, zonder het eerst te importeren:

SELECT region, COUNT(*) AS orders, SUM(amount) AS revenue
FROM 'export.csv'
GROUP BY region
ORDER BY revenue DESC;

SQLite is op veel systemen al geïnstalleerd en werkt goed als je de data in één doorzoekbaar bestand wilt bewaren:

sqlite3 sales.db
sqlite> .mode csv
sqlite> .import export.csv sales
sqlite> SELECT COUNT(*) FROM sales;

Een goede werkwijze: doe het zware werk hier en schrijf daarna een klein resultaat – een paar duizend samenvattende rijen – terug naar CSV voor Excel of een rapport.

Veelgestelde vragen

Kan ik de rijlimiet van Excel verhogen?

Nee. De grens van 1.048.576 rijen ligt vast voor elk werkblad. Je kunt er alleen omheen werken: de data in het gegevensmodel laden, het bestand splitsen of een andere tool gebruiken.

Hoe weet ik of mijn bestand is afgekapt?

Excel waarschuwt bij het openen, en een werkblad waarvan de data precies op rij 1.048.576 eindigt, is een sterke aanwijzing. Wil je het zeker weten, controleer dan de grootte van het oorspronkelijke bestand met wc -l of open het in de CSV-viewer, die het totale aantal rijen toont.

Openen Google Sheets of LibreOffice het dan wel?

Meestal niet. Google Sheets heeft een maximum van 10 miljoen cellen per spreadsheet, en ook LibreOffice Calc heeft een vast maximumaantal rijen per werkblad. Voor kleinere bestanden zijn ze prima, maar een export van miljoenen rijen vraagt om een viewer, een database of een script.

Is het veilig om een grote klantenexport in een browsertool te openen?

Dat hangt van de tool af. Veel online converters uploaden je bestand naar een server. Opener leest het bestand lokaal in je browser en stuurt niets door, dus de data blijft op je apparaat.