Cách mở file CSV quá lớn, vượt giới hạn dòng của Excel
Một sheet Excel chứa tối đa 1.048.576 dòng và 16.384 cột, nên file xuất 3 triệu dòng đơn giản là không vừa — Excel tải phần đầu, cảnh báo bạn và bỏ lại phần còn lại. Để xem toàn bộ file, hãy mở bằng công cụ không có giới hạn đó, như Trình xem CSV, nạp vào Data Model của Excel thay vì vào sheet, chia nhỏ file, hoặc phân tích bằng Python hay cơ sở dữ liệu.
Vì sao Excel cắt bớt file
Bản thân file CSV không có giới hạn kích thước. Nó là văn bản thuần: mỗi dòng là một hàng, các giá trị ngăn cách bằng dấu phẩy hoặc chấm phẩy (nếu bạn mới nghe lần đầu, xem file CSV là gì). Tuy nhiên, Excel đặt mọi thứ bạn mở vào một sheet, và sheet có lưới cố định: 1.048.576 dòng × 16.384 cột (cột XFD).
Khi file lớn hơn lưới đó, Excel hiện cảnh báo rằng file không được tải đầy đủ và chỉ giữ những dòng vừa lưới. Dòng tiêu đề cộng 1.048.575 dòng dữ liệu được giữ lại; từ dòng 1.048.577 trở đi biến mất khỏi những gì bạn thấy trên màn hình.
Google Sheets cũng không phải lối thoát. Nó giới hạn 10 triệu ô cho mỗi bảng tính, tính trên tất cả các sheet. File 3 triệu dòng và 10 cột đã là 30 triệu ô, nên cũng không nhập được.
Rủi ro thật: lưu lại là mất dữ liệu
Cảnh báo rất dễ bị bấm tắt, và phần còn lại trên màn hình trông như một bảng hoàn toàn bình thường. Nguy hiểm đến sau đó:
- Bạn lưu file. Excel chỉ ghi lại những gì nó đã tải. Nếu bạn bấm Save với
export.csv, 3 triệu dòng gốc bị thay bằng khoảng một triệu, không có thêm cảnh báo nào. - Bạn tính tổng. Hàm
SUMhay PivotTable trên sheet bị cắt cho ra kết quả trông hợp lý nhưng sai, vì hai phần ba dữ liệu chưa bao giờ được nạp vào. - Bạn chia sẻ file. Đồng nghiệp nhận bản đã lưu không có cách nào biết là thiếu dòng.
Nếu Excel đã hiện cảnh báo, hãy đóng file mà không lưu và giữ nguyên file xuất gốc. Sau đó kiểm tra xem nó thực sự lớn cỡ nào rồi mới quyết định làm gì.
Cách 1: mở toàn bộ file trong trình duyệt
Nếu bạn chủ yếu cần xem dữ liệu — kiểm tra vài bản ghi, tìm một khách hàng, xem một cột chứa gì — trình xem không bị giới hạn lưới là con đường nhanh nhất.
Trình xem CSV của Opener đọc file trong trình duyệt và không bao giờ tải lên, điều quan trọng khi file xuất có dữ liệu khách hàng hoặc tài chính. Việc phân tích chạy ở luồng nền và chỉ những dòng trên màn hình mới được vẽ, nên file 200.000 dòng mở trong khoảng một giây và file hàng triệu dòng vẫn chạy được trên laptop bình thường. Giới hạn thực tế là bộ nhớ của thiết bị, không phải một số dòng cố định.
Khi đã mở, bạn có thể:
- tìm kiếm trên mọi cột ngay khi gõ;
- sắp xếp theo cột bất kỳ;
- xuất chế độ xem hiện tại — đã lọc và sắp xếp — thành file CSV UTF-8 sạch hoặc JSON.
Điểm cuối cùng là một mẹo tiện lợi: lọc 3 triệu dòng xuống còn 40.000 dòng liên quan đến một khu vực, xuất ra, và file nhỏ hơn đó mở trong Excel mà không có cảnh báo nào. Trình xem không chạy công thức, PivotTable hay biểu đồ; nếu cần những thứ đó, hãy đọc tiếp.
Cách 2: nạp vào Data Model của Excel
Các phiên bản Excel desktop gần đây có thể nhập CSV qua Power Query (đường “Get Data” / “From Text/CSV” trên tab “Data”) thay vì mở trực tiếp. Khác biệt nằm ở nơi dữ liệu được đặt vào.
Thay vì nạp kết quả vào một sheet, hãy chọn chỉ tạo kết nối (connection only) và thêm vào Data Model. Data Model lưu dữ liệu ở dạng nén bên ngoài lưới, nên không bị ràng buộc bởi giới hạn 1.048.576 dòng. Sau đó bạn có thể dựng PivotTable trên đó và tổng hợp toàn bộ 3 triệu dòng — tổng theo tháng, số lượng theo danh mục, v.v.
Đánh đổi: bạn không thể cuộn qua từng dòng như sheet thông thường, và tên menu chính xác khác nhau giữa các phiên bản Excel. Đây là lựa chọn tốt nhất khi bạn cần ở lại trong Excel và kết quả cuối cùng là bảng tổng hợp chứ không phải xem từng dòng.
Cách 3: đếm, xem trước và chia file bằng dòng lệnh
Trên macOS, Linux hoặc Windows có WSL, vài lệnh tiêu chuẩn trả lời câu “nó lớn cỡ nào?” và “trong đó có gì?” chỉ trong vài giây, mà không cần nạp file vào đâu cả:
wc -l export.csv # số dòng văn bản
head -n 20 export.csv # 20 dòng đầu
head -n 100000 export.csv > sample.csv # một mẫu nhỏ hơn để thử nghiệm
Lưu ý rằng wc -l đếm dòng văn bản, không phải bản ghi. Nếu một số giá trị chứa dấu xuống dòng bên trong dấu ngoặc kép (địa chỉ và bình luận thường như vậy), số dòng văn bản sẽ cao hơn số bản ghi.
Để chia file thành các phần Excel mở được, mỗi phần có dòng tiêu đề riêng:
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
Chia file ổn cho kiểm tra nhanh, nhưng hãy cẩn thận với cùng vấn đề xuống dòng trong ngoặc kép: split cắt theo dòng văn bản và có thể cắt đôi một giá trị nhiều dòng. Và làm việc trên bốn workbook riêng rẽ rất bất tiện nếu bạn cần tính tổng trên tất cả.
Cách 4: phân tích bằng pandas, SQLite hoặc DuckDB
Nếu bạn định tính toán, ghép bảng hay tổng hợp, một công cụ dữ liệu thực thụ là câu trả lời thẳng thắn nhất. Tất cả các công cụ này xử lý hàng chục triệu dòng trên một laptop bình thường.
Python với pandas đọc toàn bộ file vào bộ nhớ:
import pandas as pd
df = pd.read_csv("export.csv")
print(len(df))
print(df.groupby("region")["amount"].sum())
Nếu file lớn hơn RAM, hãy đọc từng phần (chunk):
total = 0
for chunk in pd.read_csv("export.csv", chunksize=500_000):
total += chunk["amount"].sum()
DuckDB có thể truy vấn trực tiếp file CSV bằng SQL mà không cần nhập trước:
SELECT region, COUNT(*) AS orders, SUM(amount) AS revenue
FROM 'export.csv'
GROUP BY region
ORDER BY revenue DESC;
SQLite có sẵn trên nhiều hệ thống và rất hợp khi bạn muốn giữ dữ liệu trong một file có thể truy vấn:
sqlite3 sales.db
sqlite> .mode csv
sqlite> .import export.csv sales
sqlite> SELECT COUNT(*) FROM sales;
Một quy trình hợp lý là làm phần nặng ở đây, rồi ghi một kết quả nhỏ — vài nghìn dòng tổng hợp — ra CSV cho Excel hoặc cho báo cáo.
Câu hỏi thường gặp
Có tăng được giới hạn dòng của Excel không?
Không. Giới hạn 1.048.576 dòng là cố định cho mọi sheet. Bạn chỉ có thể lách: nạp dữ liệu vào Data Model, chia nhỏ file, hoặc dùng công cụ khác.
Làm sao biết file của tôi đã bị cắt?
Excel cảnh báo khi mở file, và một sheet có dữ liệu kết thúc đúng ở dòng 1.048.576 là dấu hiệu rõ ràng. Để chắc chắn, hãy kiểm tra kích thước file gốc bằng wc -l hoặc mở nó trong Trình xem CSV, nơi hiển thị tổng số dòng.
Google Sheets hay LibreOffice có mở được không?
Thường là không. Google Sheets giới hạn 10 triệu ô mỗi bảng tính, và LibreOffice Calc cũng có số dòng tối đa cố định cho mỗi sheet. Cả hai đều ổn với file nhỏ hơn, nhưng file xuất hàng triệu dòng cần một trình xem, cơ sở dữ liệu hoặc script.
Mở file dữ liệu khách hàng lớn bằng công cụ trên trình duyệt có an toàn không?
Tùy công cụ. Nhiều trình chuyển đổi online tải file của bạn lên máy chủ. Opener đọc file ngay trong trình duyệt và không gửi gì đi đâu cả, nên dữ liệu ở lại trên thiết bị của bạn.