Статті

Як відкрити CSV-файл, завеликий для Excel (понад мільйон рядків)

Команда Opener5 хв читання

Аркуш Excel вміщує щонайбільше 1 048 576 рядків і 16 384 стовпці, тож вивантаження на 3 мільйони рядків просто не влізе: Excel завантажить першу частину, попередить тебе й покине решту. Щоб побачити весь файл, відкрий його інструментом без такого обмеження, як-от переглядач CSV, завантаж його в модель даних Excel замість аркуша, розділи на частини або проаналізуй за допомогою Python чи бази даних.

Чому Excel обрізає файл

Сам CSV-файл не має обмеження розміру. Це звичайний текст: один рядок файлу — один рядок таблиці, значення розділені комами чи крапками з комою (якщо для тебе це нове, читай, що таке CSV-файл). А от Excel кладе все, що ти відкриваєш, на аркуш, а в аркуша фіксована сітка: 1 048 576 рядків на 16 384 стовпці (до стовпця XFD).

Коли файл більший за цю сітку, Excel показує попередження, що файл завантажено не повністю, і залишає лише ті рядки, що вмістилися. Заголовок і 1 048 575 рядків даних потрапляють на аркуш; починаючи з рядка 1 048 577, на екрані вже нічого немає.

Google Sheets тут не врятує. Там обмеження — 10 мільйонів клітинок на таблицю, рахуючи всі аркуші. Файл на 3 мільйони рядків і 10 стовпців — це вже 30 мільйонів клітинок, тож імпортувати його теж не вийде.

Справжній ризик: збереження знищує дані

Попередження легко закрити, а те, що лишилося на екрані, виглядає як цілком нормальна таблиця. Небезпека приходить пізніше:

Якщо Excel уже показав попередження, закрий файл без збереження й не чіпай оригінальне вивантаження. Потім перевір, наскільки воно насправді велике, і вже тоді вирішуй, що робити.

Варіант 1: відкрий весь файл у браузері

Якщо тобі здебільшого треба подивитися на дані — перевірити кілька записів, знайти клієнта, глянути, що в стовпці, — найшвидше скористатися переглядачем без обмеження сітки.

Переглядач CSV від Opener читає файл у твоєму браузері й ніколи не завантажує його на сервер, а це важливо, коли у вивантаженні є дані клієнтів чи фінансові дані. Розбір виконується у фоновому потоці, а малюються лише рядки на екрані, тож файл на 200 000 рядків відкривається приблизно за секунду, а файли з мільйонами рядків працюють на звичайному ноутбуці. Практичне обмеження — пам’ять пристрою, а не фіксована кількість рядків.

Коли файл відкрито, можна:

Останнє — зручний трюк: відфільтруй 3 мільйони рядків до 40 000, де згадано один регіон, експортуй їх — і менший файл відкриється в Excel без жодних попереджень. Формул, зведених таблиць і діаграм переглядач не має; для цього читай далі.

Варіант 2: завантаж у модель даних Excel

Нові настільні версії Excel можуть імпортувати CSV через Power Query (шлях «Get Data» / «From Text/CSV» на вкладці «Дані»), а не відкривати його напряму. Різниця в тому, куди потрапляють дані.

Замість того щоб завантажувати результат на аркуш, вибери завантаження лише як підключення й додай дані до моделі даних (Data Model). Модель даних зберігає їх у стиснутому вигляді поза сіткою, тож на неї не поширюється обмеження в 1 048 576 рядків. Потім можна побудувати на ній зведену таблицю й підсумувати всі 3 мільйони рядків — суми за місяцями, кількість за категоріями тощо.

Компроміс: гортати рядки, як на звичайному аркуші, не вийде, а точні назви пунктів меню відрізняються в різних версіях Excel. Це найкращий варіант, коли треба залишатися в Excel, а кінцевий результат — підсумки, а не перегляд рядок за рядком.

Варіант 3: порахуй, переглянь і розділи в командному рядку

На macOS, Linux або Windows із WSL кілька стандартних команд за секунди відповідають на запитання «наскільки він великий?» і «що в ньому?», не завантажуючи файл ні в яку програму:

wc -l export.csv              # кількість рядків тексту
head -n 20 export.csv         # перші 20 рядків
head -n 100000 export.csv > sample.csv   # менший зразок для експериментів

Зверни увагу: wc -l рахує рядки тексту, а не записи таблиці. Якщо деякі значення містять переноси рядків усередині лапок (в адресах і коментарях так буває часто), рядків тексту буде більше, ніж записів.

Щоб розділити файл на частини, які Excel зможе відкрити, кожну — з власним рядком заголовка:

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

Для швидких перевірок розділення підходить, але пам’ятай про ту саму проблему з переносами рядків у лапках: split ріже за рядками тексту й може розрізати багаторядкове значення навпіл. До того ж працювати з чотирма окремими книгами незручно, якщо потрібні підсумки по всіх.

Варіант 4: проаналізуй за допомогою pandas, SQLite або DuckDB

Якщо збираєшся рахувати, об’єднувати чи агрегувати дані, чесна відповідь — справжній інструмент для роботи з даними. Усі ці інструменти впораються з десятками мільйонів рядків на звичайному ноутбуці.

Python із pandas читає весь файл у пам’ять:

import pandas as pd

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

Якщо файл більший за оперативну пам’ять, читай його частинами:

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

DuckDB виконує SQL-запити до CSV-файлу напряму, без попереднього імпорту:

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

SQLite встановлено на багатьох системах, і він добре підходить, коли дані хочеться тримати в одному файлі, до якого можна робити запити:

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

Зручний підхід — виконати всю важку роботу тут, а потім записати невеликий результат — кілька тисяч рядків підсумків — назад у CSV для Excel чи звіту.

Часті запитання

Чи можна збільшити ліміт рядків в Excel?

Ні. Обмеження в 1 048 576 рядків фіксоване для кожного аркуша. Його можна лише обійти: завантажити дані в модель даних, розділити файл або скористатися іншим інструментом.

Як дізнатися, чи мій файл обрізано?

Excel попереджає під час відкриття файлу, а аркуш, дані на якому закінчуються рівно на рядку 1 048 576, — вагома ознака. Щоб знати напевно, перевір розмір оригінального файлу за допомогою wc -l або відкрий його в переглядачі CSV, який показує загальну кількість рядків.

А Google Sheets чи LibreOffice його відкриють?

Зазвичай ні. Google Sheets обмежений 10 мільйонами клітинок на таблицю, а LibreOffice Calc теж має фіксовану максимальну кількість рядків на аркуші. Для менших файлів обидва підходять, але для вивантаження на кілька мільйонів рядків потрібен переглядач, база даних або скрипт.

Чи безпечно відкривати велике вивантаження з даними клієнтів у браузерному інструменті?

Залежить від інструмента. Багато онлайн-конвертерів завантажують файл на сервер. Opener читає файл локально у твоєму браузері й нікуди нічого не надсилає, тож дані залишаються на твоєму пристрої.