طريقة فتح ملف CSV كبير جدًا لا يتسع له Excel
ورقة العمل في 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 فقط ما حمّله. إن ضغطت «حفظ» على
export.csv، فستُستبدل الصفوف الأصلية البالغة 3 ملايين بنحو مليون صف فقط، دون أي تحذير إضافي. - تحسب المجاميع. دالة
SUMأو جدول محوري على الورقة المقطوعة يعطيك نتيجة تبدو معقولة لكنها خاطئة، لأن ثلثي البيانات لم يصلا أصلًا. - تشاركه. الزميل الذي يستلم النسخة المحفوظة لا يملك أي وسيلة لمعرفة أن صفوفًا مفقودة.
إن كان Excel قد عرض التحذير بالفعل، فأغلق الملف دون حفظ، واترك الملف المُصدَّر الأصلي كما هو. ثم تحقق من حجمه الحقيقي قبل أن تقرر ما تفعله.
الخيار الأول: افتح الملف كاملًا في متصفحك
إن كنت تحتاج أساسًا إلى الاطلاع على البيانات، كأن تراجع بعض السجلات، أو تبحث عن عميل، أو ترى محتوى عمود، فإن عارضًا بلا حد للشبكة هو أسرع طريق.
يقرأ عارض CSV من Opener الملف في متصفحك ولا يرفعه أبدًا، وهذا مهم عندما يحتوي الملف المُصدَّر على بيانات عملاء أو بيانات مالية. يجري التحليل في خيط معالجة بالخلفية، ولا تُرسم إلا الصفوف الظاهرة على الشاشة، لذا يُفتح ملف من 200 ألف صف في نحو ثانية، وتعمل الملفات التي تضم ملايين الصفوف على حاسوب محمول عادي. الحد العملي هو ذاكرة جهازك، لا عدد ثابت من الصفوف.
بعد فتح الملف يمكنك:
- البحث في كل الأعمدة أثناء الكتابة؛
- الفرز حسب أي عمود؛
- تصدير العرض الحالي، بعد التصفية والفرز، كملف CSV نظيف بترميز UTF-8 أو كملف JSON.
النقطة الأخيرة حيلة مفيدة: صفِّ الـ 3 ملايين صف حتى يبقى منها 40 ألفًا تخص منطقة واحدة، وصدّرها، وسيُفتح الملف الأصغر في Excel دون أي تحذير. لا يشغّل العارض الصيغ ولا الجداول المحورية ولا المخططات؛ ولهذه تابع القراءة.
الخيار الثاني: حمّله إلى نموذج البيانات في Excel
تستطيع إصدارات Excel الحديثة لسطح المكتب استيراد ملف CSV عبر Power Query (طريق «Get Data» أو «From Text/CSV» في علامة التبويب «Data») بدلًا من فتحه مباشرة. الفرق في المكان الذي تنتهي إليه البيانات.
بدلًا من تحميل النتيجة إلى ورقة عمل، اختر تحميلها كاتصال فقط وإضافتها إلى نموذج البيانات (Data Model). يخزّن نموذج البيانات البيانات بشكل مضغوط خارج الشبكة، فلا يخضع لحد 1,048,576 صفًا. يمكنك بعدها إنشاء جدول محوري (PivotTable) فوقه وتلخيص الـ 3 ملايين صف كلها: مجاميع لكل شهر، وأعداد لكل فئة، وهكذا.
الثمن: لا يمكنك تصفح الصفوف كما في ورقة عادية، وتختلف أسماء القوائم بالضبط بين إصدارات Excel. إنه الخيار الأفضل حين تحتاج إلى البقاء في Excel وتكون النتيجة النهائية ملخصًا لا عرضًا للصفوف واحدًا واحدًا.
الخيار الثالث: العدّ والمعاينة والتقسيم من سطر الأوامر
على macOS أو Linux أو Windows مع WSL، تجيب بضعة أوامر قياسية عن سؤالَي «ما حجمه؟» و«ماذا فيه؟» في ثوانٍ، دون تحميل الملف في أي برنامج:
wc -l export.csv # number of lines
head -n 20 export.csv # first 20 lines
head -n 100000 export.csv > sample.csv # a smaller sample to try things on
لاحظ أن 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 يقطع حسب الأسطر وقد يشطر قيمة متعددة الأسطر إلى نصفين. كما أن العمل على أربعة مصنفات منفصلة مرهق إن احتجت إلى مجاميع تشملها كلها.
الخيار الرابع: حلّله باستخدام pandas أو SQLite أو DuckDB
إن كنت ستجري حسابات أو تربط جداول أو تجمّع بيانات، فالجواب الصادق هو أداة بيانات حقيقية. كل هذه الأدوات تتعامل مع عشرات الملايين من الصفوف على حاسوب محمول عادي.
Python مع pandas يقرأ الملف كله إلى الذاكرة:
import pandas as pd
df = pd.read_csv("export.csv")
print(len(df))
print(df.groupby("region")["amount"].sum())
إن كان الملف أكبر من ذاكرة RAM لديك، فاقرأه على دفعات:
total = 0
for chunk in pd.read_csv("export.csv", chunksize=500_000):
total += chunk["amount"].sum()
DuckDB يستطيع الاستعلام عن ملف CSV مباشرة بلغة SQL، دون استيراده أولًا:
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 فيقرأ الملف محليًا في متصفحك ولا يرسل أي شيء إلى أي مكان، فتبقى البيانات على جهازك.