Jak otworzyć plik CSV, który jest za duży dla Excela
Arkusz Excela mieści najwyżej 1 048 576 wierszy i 16 384 kolumny, więc eksport z 3 milionami wierszy po prostu się w nim nie zmieści — Excel wczyta pierwszą część, ostrzeże Cię i zostawi resztę. Aby zobaczyć cały plik, otwórz go w narzędziu bez tego limitu, takim jak Przeglądarka CSV, wczytaj go do modelu danych Excela zamiast do arkusza, podziel go albo przeanalizuj w Pythonie lub bazie danych.
Dlaczego Excel ucina plik
Plik CSV sam w sobie nie ma limitu rozmiaru. To zwykły tekst: jeden wiersz w jednej linii, wartości rozdzielone przecinkami lub średnikami (jeśli to dla Ciebie nowość, zobacz, czym jest plik CSV). Excel jednak umieszcza wszystko, co otwierasz, w arkuszu, a arkusz ma stałą siatkę: 1 048 576 wierszy na 16 384 kolumny (do kolumny XFD).
Gdy plik jest większy niż ta siatka, Excel pokazuje ostrzeżenie, że plik nie został wczytany w całości, i zachowuje tylko wiersze, które się zmieściły. Nagłówek plus 1 048 575 wierszy danych się mieszczą; od wiersza 1 048 577 wszystko znika z tego, co widzisz na ekranie.
Google Sheets nie jest tu wyjściem. Ma limit 10 milionów komórek na plik, liczonych łącznie we wszystkich arkuszach. Plik z 3 milionami wierszy i 10 kolumnami to już 30 milionów komórek, więc też się nie zaimportuje.
Prawdziwe ryzyko: zapis oznacza utratę danych
Ostrzeżenie łatwo zamknąć, a to, co zostaje na ekranie, wygląda jak całkiem normalna tabela. Niebezpieczeństwo pojawia się później:
- Zapisujesz plik. Excel zapisuje tylko to, co wczytał. Jeśli naciśniesz Zapisz w
export.csv, oryginalne 3 miliony wierszy zostaną zastąpione mniej więcej milionem, bez dalszego ostrzeżenia. - Liczysz sumy.
SUMAczy tabela przestawna na uciętym arkuszu daje wynik, który wygląda wiarygodnie, a jest błędny, bo dwie trzecie danych nigdy nie dotarły. - Udostępniasz go. Współpracownik, który dostanie zapisaną kopię, nie ma jak się dowiedzieć, że brakuje wierszy.
Jeśli Excel już pokazał ostrzeżenie, zamknij plik bez zapisywania i zostaw oryginalny eksport nietknięty. Potem sprawdź, jak duży naprawdę jest, zanim zdecydujesz, co dalej.
Opcja 1: otwórz cały plik w przeglądarce
Jeśli głównie chcesz przejrzeć dane — sprawdzić kilka rekordów, znaleźć klienta, zobaczyć, co zawiera kolumna — najszybsza droga to przeglądarka plików bez limitu siatki.
Przeglądarka CSV w Opener odczytuje plik w Twojej przeglądarce i nigdy go nie wysyła, co ma znaczenie, gdy eksport zawiera dane klientów lub dane finansowe. Parsowanie działa w wątku w tle, a rysowane są tylko wiersze widoczne na ekranie, więc plik z 200 000 wierszy otwiera się w około sekundę, a pliki z milionami wierszy działają na zwykłym laptopie. Praktycznym limitem jest pamięć Twojego urządzenia, a nie stała liczba wierszy.
Po otwarciu możesz:
- przeszukiwać wszystkie kolumny w trakcie pisania;
- sortować według dowolnej kolumny;
- eksportować bieżący widok — przefiltrowany i posortowany — jako czysty plik CSV w UTF-8 lub JSON.
Ten ostatni punkt to przydatna sztuczka: przefiltruj 3 miliony wierszy do 40 000, które dotyczą jednego regionu, wyeksportuj je, a mniejszy plik otworzy się w Excelu bez żadnego ostrzeżenia. Przeglądarka nie obsługuje formuł, tabel przestawnych ani wykresów; jeśli ich potrzebujesz, czytaj dalej.
Opcja 2: wczytaj plik do modelu danych Excela
Nowsze wersje Excela na komputer potrafią zaimportować CSV przez Power Query (polecenie „Pobierz dane” / import z pliku tekstowego/CSV na karcie Dane), zamiast otwierać go bezpośrednio. Różnica polega na tym, gdzie trafiają dane.
Zamiast wczytywać wynik do arkusza, wybierz wczytanie go tylko jako połączenia i dodaj go do modelu danych. Model danych przechowuje dane w skompresowanej postaci poza siatką, więc nie obowiązuje go limit 1 048 576 wierszy. Na tej podstawie możesz zbudować tabelę przestawną i podsumować wszystkie 3 miliony wierszy — sumy według miesięcy, liczby według kategorii i tak dalej.
Minus: nie możesz przewijać wierszy jak w zwykłym arkuszu, a dokładne nazwy poleceń różnią się między wersjami Excela. To najlepsza opcja, gdy musisz zostać w Excelu, a efektem końcowym ma być podsumowanie, a nie przegląd wiersz po wierszu.
Opcja 3: policz, podejrzyj i podziel plik w wierszu poleceń
Na macOS, Linuksie lub Windows z WSL kilka standardowych poleceń w kilka sekund odpowie na pytania „jak duży jest plik?” i „co w nim jest?”, bez wczytywania go do czegokolwiek:
wc -l export.csv # liczba linii
head -n 20 export.csv # pierwsze 20 linii
head -n 100000 export.csv > sample.csv # mniejsza próbka do testów
Pamiętaj, że wc -l liczy linie, a nie wiersze danych. Jeśli niektóre wartości zawierają podziały linii wewnątrz cudzysłowów (adresy i komentarze często je mają), liczba linii będzie większa niż liczba wierszy.
Aby podzielić plik na części, które Excel otworzy, każdą z własnym wierszem nagłówka:
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
Dzielenie wystarcza do szybkich sprawdzeń, ale uważaj na ten sam problem z podziałami linii w cudzysłowach: split tnie po liniach i może przeciąć wieloliniową wartość na pół. A praca na czterech osobnych skoroszytach jest niewygodna, jeśli potrzebujesz sum ze wszystkich.
Opcja 4: przeanalizuj plik w pandas, SQLite lub DuckDB
Jeśli masz zamiar liczyć, łączyć lub agregować dane, uczciwa odpowiedź brzmi: użyj porządnego narzędzia do danych. Każde z poniższych radzi sobie z dziesiątkami milionów wierszy na zwykłym laptopie.
Python z pandas wczytuje cały plik do pamięci:
import pandas as pd
df = pd.read_csv("export.csv")
print(len(df))
print(df.groupby("region")["amount"].sum())
Jeśli plik jest większy niż pamięć RAM, wczytuj go w kawałkach:
total = 0
for chunk in pd.read_csv("export.csv", chunksize=500_000):
total += chunk["amount"].sum()
DuckDB potrafi odpytywać plik CSV bezpośrednio w SQL, bez wcześniejszego importu:
SELECT region, COUNT(*) AS orders, SUM(amount) AS revenue
FROM 'export.csv'
GROUP BY region
ORDER BY revenue DESC;
SQLite jest zainstalowany w wielu systemach i dobrze się sprawdza, gdy chcesz trzymać dane w jednym pliku, który można odpytywać:
sqlite3 sales.db
sqlite> .mode csv
sqlite> .import export.csv sales
sqlite> SELECT COUNT(*) FROM sales;
Dobry sposób pracy: ciężką robotę wykonaj tutaj, a potem zapisz mały wynik — kilka tysięcy wierszy podsumowania — z powrotem do CSV dla Excela lub raportu.
Najczęstsze pytania
Czy mogę zwiększyć limit wierszy w Excelu?
Nie. Limit 1 048 576 wierszy jest stały dla każdego arkusza. Można go tylko obejść: wczytać dane do modelu danych, podzielić plik albo użyć innego narzędzia.
Skąd mam wiedzieć, czy mój plik został ucięty?
Excel ostrzega przy otwieraniu pliku, a arkusz, którego dane kończą się dokładnie na wierszu 1 048 576, to mocna wskazówka. Dla pewności sprawdź rozmiar oryginalnego pliku poleceniem wc -l albo otwórz go w Przeglądarce CSV, która pokazuje łączną liczbę wierszy.
Czy Google Sheets albo LibreOffice go otworzą?
Zwykle nie. Google Sheets ma limit 10 milionów komórek na plik, a LibreOffice Calc też ma stałą maksymalną liczbę wierszy w arkuszu. Oba sprawdzają się przy mniejszych plikach, ale eksport z wieloma milionami wierszy wymaga przeglądarki plików, bazy danych albo skryptu.
Czy bezpiecznie jest otwierać duży eksport danych klientów w narzędziu w przeglądarce?
To zależy od narzędzia. Wiele konwerterów online wysyła plik na serwer. Opener odczytuje plik lokalnie w Twojej przeglądarce i niczego nigdzie nie wysyła, więc dane zostają na Twoim urządzeniu.