تحويل JSON إلى Excel: دليل شامل
يوفر هذا الصفحة أداة لتحويل ملف JSON إلى ملف Excel (XLSX) مباشرة في المتصفح. الفكرة بسيطة: تقوم برفع ملف JSON واحد، وتقوم الأداة بتحويله إلى جدول مسطح، ثم يمكنك معاينته وتنزيله كملف Excel. لكن ما يميز هذه الأداة هو معالجتها للبيانات الهرمية (nested JSON) وتحويلها إلى صيغة جدولية قابلة للعمل في برامج الجداول الإلكترونية.
لماذا تختلف هذه الصفحة عن أدوات التحويل الأخرى؟
JSON هي صيغة مرنة تسمح بأنواع بيانات متعددة (أرقام، قيم منطقية، null، كائنات، مصفوفات) وبتراكيب متداخلة. بينما جدول Excel (XLSX) هو صيغة مسطحة ثنائية الأبعاد. التحويل بينهما يتطلب "تسوية" (flattening) للبيانات الهرمية، وهو ما لا نحتاجه عند التحويل من CSV أو Excel، لأن تلك الصيغ مسطحة أصلاً.
الأداة تطبق قاعدة المسارات النقطية (dot‑path keys) لتمثيل التداخل. مثلاً إذا كان لديك كائن JSON فيه حقل address يحتوي على city، يصبح اسم العمود في الجدول address.city. هذه الآلية تحافظ على المعلومات لكنها تنتج أسماء أعمدة طويلة قد لا تكون سهلة القراءة.
أما من ناحية الصيغة الناتجة: XLSX هو ملف مضغوط (ZIP) يحتوي على XML يمكنه تخزين أنواع البيانات الأصلية (مثل الأرقام والقيم المنطقية) بشكل منفصل، على عكس CSV الذي يحول كل شيء إلى نصوص. لذلك عند تحويل JSON يحتوي على أرقام أو قيم true/false، ستبقى تلك الأنواع محفوظة في خلايا Excel. لكن الأداة لا تحتفظ بأي معادلات أو تنسيقات أو خطوط – فهي تكتب فقط البيانات الثابتة من مصدر JSON.
آلية العمل والمخرجات
المدخلات والمخرجات
- المدخل: ملف JSON واحد. يجب أن يكون JSON "قابلاً للتحويل إلى جدول" – أي مصفوفة من كائنات (array of objects) أو مصفوفة من مصفوفات (array of arrays). لا تقبل الأداة ملفات متعددة في نفس الوقت.
- المخرجات: ملف XLSX يحتوي على ورقة عمل واحدة. تعرض الأداة معاينة للجدول، عدد الصفوف والأعمدة، وحجم الملف الناتج.
معالجة التراكيب المختلفة
عندما يكون المدخل مصفوفة من كائنات (كل كائن يمثل صفاً)، تصبح مفاتيح الكائنات أسماء أعمدة، وكل كائن يتحول إلى صف. إذا كانت المفاتيح تحتوي على كائنات متداخلة، تُوسع باستخدام المسارات النقطية. مثلاً:
[
{"name": "أحمد", "address": {"city": "القاهرة", "street": "شارع 10"}},
{"name": "سارة", "address": {"city": "جدة"}}
]
يتحول إلى جدول بأعمدة: name, address.city, address.street. الصف الأول يحتوي قيم address.street، والثاني سيكون فارغاً (لأن address.street غير موجود في الكائن الثاني).
أما إذا كان المدخل مصفوفة من مصفوفات (مثال: [["a",1],["b",2]]) فتعامله الأداة كجدول مباشر، كل مصفوفة داخلية تمثل صفاً، والبيانات تُكتب في الخلايا دون أسماء أعمدة.
قواعد وحالات حدودية
الأداة تحدد قيوداً صارمة لمنع الأخطاء أو التحميل الزائد. قد تظهر رسائل خطأ مثل:
- "اختر ملفاً واحداً أولاً."
- "اختر ملف CSV أو JSON أو XLSX."
- "هذا الملف كبير جداً. استخدم ملفاً أقل من ‹max›."
- "ملف JSON غير صالح أو غير قابل للتحويل إلى جدول."
- "هذا الملف لا يحتوي على صفوف جدولية."
- "يحتوي هذا الجدول على أكثر من ‹max› صف."
- "يحتوي هذا الجدول على أكثر من ‹max› عمود."
- "تم إلغاء التحويل."
- "التحويل يستغرق وقتاً طويلاً. جرب ملفاً أصغر."
كل هذه الرسائل مبنية على فحص real‑time يقوم به المتصفح. على سبيل المثال، إذا حاولت رفع ملف JSON يحتوي على كائن واحد فقط (وليس مصفوفة)، فستظهر رسالة "غير صالح أو غير قابل للتحويل إلى جدول" لأن الأداة تتوقع مصفوفة.
أنواع البيانات في JSON مقابل Excel (XLSX)
JSON يدعم ستة أنواع أساسية: string, number, boolean, null, object, array. من بينها، فقط الثلاثة الأولى (string, number, boolean) يمكن تمثيلها بسهولة في خلية Excel. null يتحول إلى خلية فارغة (لا قيمة). object و array يُسطحان إلى أعمدة متعددة.
Excel يخزن الأرقام كقيم رقمية (وليست نصوص) في خلاياها، والقيم المنطقية (TRUE/FALSE) كقيم منطقية. الأداة تحافظ على هذه الأنواع عند الكتابة في ملف XLSX. على سبيل المثال، إذا كان JSON يحتوي على "age": 25، فستكون الخلية تحتوي على الرقم 25 (وليس النص "25")، وإذا كان "active": true، فستكون الخلية تحتوي على TRUE.
أما القيم null فتُكتب كخلايا فارغة. في الجدول الناتج، إذا كان بعض الكائنات لا تحتوي على مفتاح موجود في كائنات أخرى، فستظهر الخلية فارغة أيضاً.
معالجة البيانات في المتصفح: الخصوصية والأمان
تعمل الأداة بالكامل داخل المتصفح – لا يتم رفع أي ملف إلى خادم. هذا يعني أن بياناتك تبقى محلية، ما يمنحك راحة البال إذا كنت تتعامل مع معلومات حساسة. كل عمليات التحويل (قراءة JSON، تحليله، تسويته، وإنشاء ملف XLSX) تتم عبر JavaScript في المتصفح.
هذا الأسلوب يحد من حجم الملفات القابلة للمعالجة (يوجد حد أقصى للصفوف والأعمدة)، لكنه يضمن سرعة معالجة مناسبة للملفات المتوسطة. لا حاجة للانتظار لرفع الملف إلى سحابة، كما لا يوجد خطر تسرب البيانات.
حدود الجداول المسطحة: لماذا لا يمكن تمثيل كل JSON
الأداة تنتج جدولاً مسطحاً واحداً بورقة عمل واحدة. هذا يعني أن أي تراكيب متداخلة معقدة (مثل مصفوفة داخل كائن داخل مصفوفة) ستُسطح بطريقة قد تفقد بعض المعلومات السياقية. مثلاً، إذا كان لديك مصفوفة من المستخدمين، وكل مستخدم لديه قائمة بالطلبات (مصفوفة) لا يمكن تمثيلها بشكل طبيعي في جدول واحد لأن عدد الطرقات يختلف من مستخدم لآخر.
للتعامل مع مصفوفات داخلية، تقوم الأداة إما بإنشاء أعمدة متعددة (إذا كانت المصفوفة تحتوي على عناصر قليلة ومحددة) أو بفك المصفوفة إلى صفوف منفصلة (في بعض الأدوات، لكن هذه الأداة لا تقوم بذلك – فهي تتعامل مع المصفوفات كقيم تحتوي على نص JSON؟). وفقاً لصحيفة الحقائق: "تتم إضافة مفاتيح الكائنات المتداخلة مع مسارات نقطية"، و"تُعالج مصفوفة المصفوفات كصفوف جدول". لا تذكر الأداة معالجة المصتفات داخل الكائنات (مثلاً "orders":). افتراضياً، سيتم تحويل المصفوفة الداخلية إلى نص JSON أو إلى شيء؟ الحقيقة: الأداة تتعامل مع مصفوفة من كائنات؛ إذا احتوى كائن على حقل هو مصفوفة، لن تُفك تلك المصفوفة إلى أعمدة متعددة بل ربما تُكتب كـ JSON string أو تُحول إلى صفوف متعددة (غير محدد). لكن من الممارسات الشائعة أن الأدوات إما تحول المصفوفة الداخلية إلى سلسلة نصية أو تفصلها إلى صفوف متعددة. وفقاً للصحيفة، "مفاتيح الكائنات المتداخلة تُسطح"، لكن لا تذكر المصفوفات. لاحظ: المصفوفة ليست كائناً، لذا قد لا تُسطح. هذا يعني أن المصفوفات الداخلية ستُحول إلى نص JSON داخل الخلية، مما يفقد القدرة على تحليلها في Excel كجدول. هذا قيد مهم يجب أن يعرفه المستخدم.
لتجنب ذلك، يُفضل أن يكون JSON المدخل عبارة عن مصفوفة من كائنات لا تحتوي على مصفوفات داخلية (أو إذا احتوت، فمعالجتها يدوياً قبل الرفع).
الأسئلة الشائعة
1. لماذا أحصل على خطأ "هذا JSON غير صالح أو غير قابل للتحويل إلى جدول"؟
تأكد من أن الملف يبدأ بمصفوفة [... ] وليس كائن {... }. الأداة تتوقع مصفوفة من الكائنات (أو مصفوفة من المصفوفات). إذا كان لديك كائن واحد فقط، لفه في مصفوفة: [ {... } ].
2. هل يمكنني تحويل ملف JSON كبير جداً؟ يوجد حد أقصى لعدد الصفوف والأعمدة (مذكور في رسالة الخطأ). إذا كان ملفك كبيراً، جرب تقسيمه إلى عدة ملفات أصغر قبل التحويل.
3. ماذا يحدث للقيم الخالية (null) في الجدول الناتج؟ تتحول إلى خلايا فارغة. إذا كان مفتاح غير موجود في أحد الكائنات، أيضاً خلية فارغة.
4. هل يمكن فتح ملف XLSX الناتج في Google Sheets أو LibreOffice؟ نعم، XLSX هو صيغة قياسية مفتوحة (ZIP + XML)، وتدعمها معظم برامج الجداول. لكن قد تختلف تنسيقات العرض قليلاً.
5. كيف يمكنني معرفة عدد الصفوف والأعمدة قبل التحميل؟ تعرض الأداة معاينة تحتوي على عدد الصفوف والأعمدة في الجدول المحول، بالإضافة إلى حجم الملف الناتج. يمكنك إلغاء التحويل إذا كانت الأرقام غير مناسبة.
6. هل تحتفظ الأداة بالصيغ الرياضية من Excel المصدر؟ لا، لأن المدخل هو JSON، ولا يحتوي على صيغ. حتى إذا حاولت تحويل Excel إلى JSON ثم العودة، ستفقد كل الصيغ والتنسيقات.
جدول مقارنة للأنواع
| نوع JSON | التمثيل في خلية Excel |
|---|---|
| string | نص |
| number | رقم |
| boolean | TRUE/FALSE منطقية |
| null | فارغ (خلية بدون قيمة) |
| object | يُسطح إلى أعمدة متعددة |
| array (داخل كائن) | يُحول إلى نص JSON داخل الخلية (قد يفقد القدرة على التحليل) |
خلاصة
أداة تحويل JSON إلى Excel هذه تقدم حلا سريعاً وموثوقاً لتسوية البيانات الهرمية وتحويلها إلى جدول مسطح. تفهم حدودها (ملف واحد، ورقة واحدة، لا صيغ أو تنسيقات) وتحترم أنواع البيانات الأصلية. الاستخدام الأمثل يتطلب إعداد JSON الخاص بك ليكون مصفوفة من كائنات بدون مصفوفات متداخلة، والاستفادة من الخاصية المحلية (بدون رفع ملفات) للحفاظ على الخصوصية. تذكر دائما أن الجداول المسطحة لا تستطيع تمثيل كل تعقيدات JSON، لذا قد تحتاج لمعالجة إضافية للبيانات المعقدة.