Öppna en CSV-fil som är för stor för Excel
Ett kalkylblad i Excel rymmer högst 1 048 576 rader och 16 384 kolumner, så en export på 3 miljoner rader får helt enkelt inte plats – Excel läser in första delen, varnar dig och lämnar resten utanför. För att se hela filen öppnar du den i ett verktyg utan den gränsen, till exempel CSV-läsaren, läser in den i Excels datamodell i stället för i ett blad, delar upp den eller analyserar den med Python eller en databas.
Därför klipper Excel av filen
En CSV-fil har ingen egen storleksgräns. Den är vanlig text: en rad per post, med värden åtskilda av komma eller semikolon (är det nytt för dig, läs vad en CSV-fil är). Excel lägger dock allt du öppnar i ett kalkylblad, och ett kalkylblad har ett fast rutnät: 1 048 576 rader gånger 16 384 kolumner (kolumn XFD).
När filen är större än rutnätet visar Excel en varning om att filen inte lästes in helt och behåller bara de rader som får plats. Rubriken plus 1 048 575 datarader kommer med; från rad 1 048 577 och framåt syns ingenting på skärmen.
Google Sheets är ingen utväg här. Där är gränsen 10 miljoner celler per kalkylark, räknat över alla blad. En fil med 3 miljoner rader och 10 kolumner är redan 30 miljoner celler, så den går inte heller att importera.
Den verkliga risken: att spara gör att data försvinner
Varningen är lätt att klicka bort, och det som står kvar på skärmen ser ut som en helt vanlig tabell. Faran kommer senare:
- Du sparar filen. Excel skriver bara tillbaka det som lästes in. Trycker du på Spara i
export.csversätts de ursprungliga 3 miljonerna rader med ungefär en miljon, utan någon ytterligare varning. - Du räknar ut summor. En
SUMMAeller en pivottabell över det avklippta bladet ger ett svar som ser rimligt ut men är fel, eftersom två tredjedelar av datan aldrig kom med. - Du delar filen. En kollega som får den sparade kopian har ingen möjlighet att veta att rader saknas.
Har Excel redan visat varningen: stäng filen utan att spara och låt originalexporten vara orörd. Kontrollera sedan hur stor den egentligen är innan du bestämmer vad du ska göra.
Alternativ 1: öppna hela filen i webbläsaren
Om du främst behöver titta på datan – kolla några poster, hitta en kund, se vad en kolumn innehåller – är en visare utan rutnätsgräns det snabbaste sättet.
Openers CSV-läsare läser filen i din webbläsare och laddar aldrig upp den, vilket spelar roll när exporten innehåller kund- eller ekonomidata. Tolkningen körs i en bakgrundstråd och bara raderna på skärmen ritas, så en fil med 200 000 rader öppnas på ungefär en sekund och filer med miljontals rader fungerar på en vanlig laptop. Den praktiska gränsen är enhetens minne, inte ett fast antal rader.
När filen är öppen kan du:
- söka i alla kolumner medan du skriver;
- sortera efter valfri kolumn;
- exportera den aktuella vyn – filtrerad och sorterad – som ren UTF-8-CSV eller JSON.
Den sista punkten är ett smidigt knep: filtrera 3 miljoner rader ner till de 40 000 som gäller en region, exportera dem, så öppnas den mindre filen i Excel utan någon varning. Visaren kör inga formler, pivottabeller eller diagram; för det, läs vidare.
Alternativ 2: läs in filen i Excels datamodell
Nyare skrivbordsversioner av Excel kan importera en CSV via Power Query (vägen ”Hämta data” / ”Från text/CSV” på fliken Data) i stället för att öppna den direkt. Skillnaden är var datan hamnar.
I stället för att läsa in resultatet i ett kalkylblad väljer du att bara skapa en anslutning och lägga till den i datamodellen. Datamodellen lagrar datan i komprimerad form utanför rutnätet, så den begränsas inte av gränsen på 1 048 576 rader. Sedan kan du bygga en pivottabell ovanpå och sammanfatta alla 3 miljoner rader – summor per månad, antal per kategori och så vidare.
Nackdelen: du kan inte scrolla genom raderna som i ett vanligt blad, och de exakta menynamnen skiljer sig mellan Excel-versioner. Det är det bästa alternativet när du måste stanna i Excel och slutresultatet är en sammanställning snarare än en vy rad för rad.
Alternativ 3: räkna, förhandsgranska och dela upp från kommandoraden
På macOS, Linux eller Windows med WSL svarar några standardkommandon på ”hur stor är den?” och ”vad innehåller den?” på några sekunder, utan att filen läses in i något program:
wc -l export.csv # antal rader
head -n 20 export.csv # de första 20 raderna
head -n 100000 export.csv > sample.csv # ett mindre urval att testa på
Observera att wc -l räknar textrader, inte poster. Om vissa värden innehåller radbrytningar inom citattecken (adresser och kommentarer gör ofta det) blir antalet textrader högre än antalet poster.
För att dela upp filen i delar som Excel kan öppna, var och en med egen rubrikrad:
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
Att dela upp filen fungerar bra för snabba kontroller, men se upp med samma problem med radbrytningar inom citattecken: split delar per textrad och kan klyva ett värde som sträcker sig över flera rader. Och att arbeta i fyra separata arbetsböcker blir klumpigt om du behöver summor över alla.
Alternativ 4: analysera med pandas, SQLite eller DuckDB
Ska du räkna, koppla ihop eller aggregera är ett riktigt dataverktyg det ärliga svaret. Alla de här klarar tiotals miljoner rader på en vanlig laptop.
Python med pandas läser in hela filen i minnet:
import pandas as pd
df = pd.read_csv("export.csv")
print(len(df))
print(df.groupby("region")["amount"].sum())
Är filen större än datorns RAM läser du den i delar:
total = 0
for chunk in pd.read_csv("export.csv", chunksize=500_000):
total += chunk["amount"].sum()
DuckDB kan ställa SQL-frågor direkt mot en CSV-fil, utan att importera den först:
SELECT region, COUNT(*) AS orders, SUM(amount) AS revenue
FROM 'export.csv'
GROUP BY region
ORDER BY revenue DESC;
SQLite finns installerat på många system och passar bra när du vill ha datan i en enda fil som går att ställa frågor mot:
sqlite3 sales.db
sqlite> .mode csv
sqlite> .import export.csv sales
sqlite> SELECT COUNT(*) FROM sales;
Ett bra arbetssätt är att göra grovjobbet här och sedan skriva ut ett litet resultat – några tusen sammanfattande rader – till CSV för Excel eller en rapport.
Vanliga frågor
Kan jag höja Excels radgräns?
Nej. Gränsen på 1 048 576 rader är fast för varje kalkylblad. Du kan bara gå runt den: läsa in datan i datamodellen, dela upp filen eller använda ett annat verktyg.
Hur vet jag om min fil har klippts av?
Excel varnar när filen öppnas, och ett blad där datan slutar exakt på rad 1 048 576 är ett starkt tecken. För att vara säker kontrollerar du originalfilens storlek med wc -l eller öppnar den i CSV-läsaren, som visar det totala antalet rader.
Öppnar Google Sheets eller LibreOffice den i stället?
Oftast inte. Google Sheets har ett tak på 10 miljoner celler per kalkylark, och LibreOffice Calc har också ett fast maxantal rader per blad. Båda fungerar bra för mindre filer, men en export på flera miljoner rader kräver en visare, en databas eller ett skript.
Är det säkert att öppna en stor kundexport i ett webbläsarverktyg?
Det beror på verktyget. Många onlinekonverterare laddar upp filen till en server. Opener läser filen lokalt i webbläsaren och skickar inget någonstans, så datan stannar på din enhet.