CSV أم Excel أم JSON: أي صيغة لبياناتك؟
حفظنا الجدول نفسه ذا 100,000 صف بصيغة CSV وكمصنف Excel وبصيغة JSON، ثم قارنا الأحجام وسرعة قراءة كل منها في الشيفرة وما يحدث من أخطاء مع التواريخ والأصفار البادئة والأرقام الطويلة.
جداول البيانات تنتقل بين الناس والبرامج بثلاث صيغ رئيسية: CSV ومصنفات Excel (XLSX) وJSON. كل منها الخيار الطبيعي في مكان ما، وكل منها يسبب نوعًا مألوفًا من المتاعب حين ينتهي في المكان الخطأ. لنقارنها بشروط متكافئة، حفظنا جدولًا واحدًا بالصيغ الثلاث وقسنا الحجم وسرعة القراءة، ثم نظرنا في ما تستطيع كل صيغة حمله وما لا تستطيع.
جدول الاختبار
الجدول 100,000 طلب مبيعات بسبعة أعمدة: رقم الطلب والتاريخ والبلد والمنتج والكمية وسعر الوحدة والإجمالي. تبدو الصفوف الأولى هكذا بصيغة CSV:
order_id,date,country,product,quantity,unit_price,total
100000,2025-11-30,Brazil,Water bottle,6,158.35,950.1
100001,2025-02-25,France,Office chair,7,158.73,1111.11وهكذا بصيغة JSON:
[
{
"order_id": 100000,
"date": "2025-11-30",
"country": "Brazil",
"product": "Water bottle",
"quantity": 6,
"unit_price": 158.35,
"total": 950.1
},
...
]حجم الملف
الأحجام بالميغابايت (MiB). يكرر JSON كل اسم عمود في كل صف، ولهذا حجمه مرتان ونصف حجم CSV.
ملف Excel أرشيف ZIP من مستندات XML، فيصل مضغوطًا، ويخزن Excel كل قيمة نصية مميزة مرة واحدة في قائمة مشتركة. هذا يجعله أصغر قليلًا من CSV هنا. وJSON الأكبر بفارق كبير: كل صف يكرر "order_id" و"date" وبقية المفاتيح، والإزاحة تضيف أكثر من الثلث فوق ذلك.
تتغير الصورة حين تُضغط الملفات، كما يحدث أثناء النقل حين يرسلها خادم ويب مع gzip:
| الصيغة | الحجم | مع gzip |
|---|---|---|
| CSV | 5.03 ميغابايت | 1.36 ميغابايت |
| JSON، مضغوط | 12.37 ميغابايت | 1.63 ميغابايت |
| JSON، بإزاحة | 16.95 ميغابايت | 1.72 ميغابايت |
| XLSX، حفظه Excel | 4.46 ميغابايت | مضغوط أصلًا |
سرعة القراءة
الحجم أقل أهمية مما قد تظن على اتصال حديث. سرعة إعادة البرنامج للملف إلى صفوف أهم حين تكون البيانات كبيرة. قرأنا كل ملف بالمكتبات التي تستخدمها أدوات البيانات لدينا، وأخذنا الوسيط من خمسة تشغيلات:
| الصيغة | القراءة إلى صفوف | المكتبة |
|---|---|---|
| JSON، مضغوط | 0.12 ث | JSON.parse، مدمجة في JavaScript |
| CSV | 0.47 ث | Papa Parse |
| XLSX | 10.2 ث | SheetJS |
يفوز JSON في الشيفرة لأن كل لغة تأتي بمحلل أصلي سريع والأنواع تأتي مجانًا. CSV يحتاج محللًا يتعامل مع علامات الاقتباس ويحوّل النص إلى أرقام. وXLSX الأبطأ بفارق كبير خارج Excel: على البرنامج فك ضغط الملف وتحليل مستند XML كبير وحل السلاسل المشتركة والأنماط. إن كان سكربت أو تطبيق ويب يقرأ جداول كبيرة كثيرًا، فـXLSX صيغة خاطئة لتغذيته.
ما تستطيع كل صيغة حمله
| CSV | XLSX | JSON | |
|---|---|---|---|
| أنواع البيانات | نص فقط | أرقام ونص وتواريخ وقيم منطقية | أرقام ونص وقيم منطقية وnull |
| عدة جداول | لا، جدول لكل ملف | نعم، كأوراق | نعم، ككائنات متداخلة |
| بيانات متداخلة | لا | لا | نعم |
| الصيغ والتنسيق | لا | نعم | لا |
| حد الصفوف | لا يوجد | 1,048,576 صفًا | لا يوجد |
| مقروء في محرر نصوص | نعم | لا | نعم |
| يُفتح في Excel | نعم، بحذر | نعم | بـPower Query أو محوّل |
أين يخطئ CSV
يبدو CSV أبسط صيغة، وغياب القواعد فيه هو بالضبط سبب كثرة مشاكله. المسائل القليلة نفسها تتكرر مرة بعد مرة:
- تختفي الأصفار البادئة. الرموز البريدية ورموز المنتجات وأرقام الهواتف مثل
02134تصير2134حين يخمّن جدول البيانات أنها أرقام. - الأرقام الطويلة تفقد خانات. يحتفظ Excel بـ15 خانة معنوية، فيغيّر رقم بطاقة أو حساب من 16 خانة آخر خانة فيه بصمت.
- التواريخ يُعاد تفسيرها.
03/04/2025هو 3 أبريل في معظم العالم و4 مارس في الولايات المتحدة، وجداول البيانات تحوّل هذه القيم حين تفتح الملف. التواريخ بصيغة ISO مثل2025-04-03تتجنب التخمين. - الفاصل يتوقف على البلد. حيث تكون العلامة العشرية فاصلة، كما في فرنسا أو ألمانيا، يتوقع Excel فواصل منقوطة بين الحقول، فيُفتح الملف المفصول بفواصل كعمود واحد طويل.
- الحروف العربية والمشكّلة تتحول إلى رموز. لا يقرأ Excel ملف CSV بترميز UTF-8 بشكل صحيح إلا إذا بدأ الملف بعلامة ترتيب البايت. وبدونها قد يظهر «Café» على هيئة «Café».
- الفواصل داخل القيم يجب أن تُحاط بعلامات اقتباس، وعلامات الاقتباس داخل القيم المقتبسة تُضاعف. وملفات CSV المكتوبة يدويًا كثيرًا ما تخطئ في ذلك.
لا شيء من هذا يحدث مع XLSX أو JSON، اللتين تخزنان الأنواع صراحة. ومع CSV، أسلم عادة هي فتحه عبر شاشة الاستيراد في Excel (البيانات، من نص/CSV)، حيث تستطيع ضبط نوع كل عمود، بدل النقر المزدوج على الملف.
أيها تستخدم
- إرسال جدول إلى شخص سينظر فيه أو يفرزه أو يضيف صيغًا: XLSX. يحتفظ بالأنواع والتنسيق ويُفتح بشكل صحيح أينما توفر Excel أو Google Sheets أو Numbers أو LibreOffice.
- تبادل البيانات بين الأنظمة، أو الاستيراد إلى قاعدة بيانات، أو أرشفة البيانات الخام: CSV، بترميز UTF-8 وتواريخ ISO وصف عناوين. عالمي ومضغوط ومقروء بعد عقود.
- بيانات لتطبيق ويب أو واجهة برمجية، أو أي شيء ببنية متداخلة: JSON. إنها الصيغة الأصلية لـJavaScript والأسرع قراءةً في الشيفرة.
التحويل بينها هو الجزء السهل عادةً. محوّل Excel وCSV لدينا يحوّل XLSX وXLS وODS إلى CSV أو JSON ورقةً ورقة ويبني ملفات Excel من CSV أو TSV أو JSON، وعارض CSV يفتح ملفات CSV الكبيرة مع الفرز والمرشحات، ومحوّل البيانات ينقل بين JSON وCSV وYAML وXML. كلها تعمل في المتصفح، فلا تغادر البيانات جهازك.
أسئلة وأجوبة
أيهما أصغر، CSV أم Excel؟
في اختبارنا كان ملف Excel الذي حفظه Excel أصغر قليلًا (4.5 ميغابايت) من البيانات نفسها بصيغة CSV (5.0 ميغابايت)، لأن XLSX مضغوط داخليًا. ولو ضُغط CSV لكان أصغر بكثير (نحو 1.4 ميغابايت مع gzip).
لماذا يحذف Excel الأصفار في بداية أرقامي؟
يخمّن Excel أن العمود يحمل أرقامًا حين يفتح ملف CSV. استورد الملف عبر البيانات، من نص/CSV واضبط ذلك العمود على نص، أو احتفظ بالبيانات بصيغة XLSX.
هل يمكن فتح JSON في Excel؟
نعم، عبر Power Query (البيانات، الحصول على البيانات، من ملف، من JSON)، أو بتحويله إلى CSV أو XLSX أولًا. القوائم المسطحة من الكائنات تتحول بنظافة؛ والبيانات المتداخلة يجب تسطيحها إلى أعمدة.
كم صفًا يستطيع Excel فتحه؟
تتسع ورقة Excel لـ1,048,576 صفًا و16,384 عمودًا على الأكثر. ملفات CSV الأكبر تُفتح جزئيًا، فاستخدم عارضًا يقرأ الملف تدفقيًا أو قسّمه.
الأدوات في هذا المقال
المزيد من المدونة
ZIP أم 7z أم RAR: أي صيغة أرشيف هي الأفضل؟
حزمنا المجلدات نفسها من الصور والفيديو والمستندات والبيانات في أرشيفات ZIP و7z وRAR وقسنا الحجم والسرعة. الفائز يتوقف كليًا تقريبًا على ما في الداخل.
تصحيح الأخطاء وحجم رمز QR: اختبار L وM وQ وH
تصحيح الأخطاء الأعلى يجعل رمز QR يصمد أمام التلف، لكنه يجعله أكثف أيضًا. أنشأنا رموزًا لأربعة أنواع شائعة من المحتوى بكل مستوى وغطيناها شيئًا فشيئًا حتى توقفت قراءتها.
شرح الطوابع الزمنية في Unix
الطابع الزمني في Unix مجرد عدد من الثواني، ومع ذلك يسبب سيلًا ثابتًا من الأخطاء. ما الذي يعدّه، وكيف تميز الثواني من الميلي ثانية بنظرة، وما الذي يحدث مع المناطق الزمنية والثواني الكبيسة، ولماذا يهم عام 2038.