الأدوات
الأدلة

محوّل JSON إلى Excel

JSON

حوّل مصفوفة JSON إلى ملف Excel .xlsx باستخدام SheetJS ونزّله.

100% من جهة العميل بدون خادم خلفي

لا يتم جلب الروابط البعيدة؛ الصق JSON مباشرة.

الإدخال
الإخراج
في هذه الصفحة

ما هو مُحوِّل JSON إلى Excel؟#

يأخذ مُحوِّل JSON إلى Excel مستند JSON على شكل جدول — عادةً مصفوفة من الكائنات المتشابهة — ويُنتج مصنّف .xlsx حقيقيًا تفتحه في Excel أو Google Sheets أو LibreOffice. كل كائن يصير صفًا، وكل مفتاح ذي مستوى أعلى يصير عمودًا، والصف الأول في الورقة هو صف العناوين. المخرجات ملف جدول بيانات ثنائي حقيقي، لا CSV مُعاد تسميته.

يجسر هذا الفجوة بين الأنظمة التي تتحدث JSON (الواجهات البرمجية، السجلات، تصدير NoSQL) والأشخاص الذين يعملون في جداول البيانات. يستطيع خادم خلفي تفريغ ألف سجل كـ JSON؛ ويرغب المحلّل البشري في رؤيتها في Excel ليعمل pivot ويُرشِّح ويُخطِّط بيانيًّا. كما يتعامل المُحوِّل مع فوضى البيانات الحقيقية: الكائنات المتداخلة، والحقول الموجودة في بعض الصفوف دون الأخرى، والحقول ذات القيم المصفوفية التي لا مكان طبيعيًا لها في شبكة.

تقوم اتفاقيتان بالعمل الثقيل. تُسطَّح الكائنات المتداخلة بمفاتيح بتدوين النقاط — يصير {"address": {"city": "London"}} عمودًا اسمه address.city. أما الحقول ذات القيم المصفوفية (وأي كائن ينجو من التسطيح) فتُحوَّل إلى نص JSON داخل خليتها، لأن خلية الجدول تحمل قيمة واحدة، لا بنية متداخلة. الناتج جدول مسطّح ومستطيل يفتحه برنامج الجداول دون شكوى.

كيفية الاستخدام#

  1. الصق مصفوفة JSON من الكائنات في لوحة الإدخال على اليسار. يُقبل أيضًا كائن مفرد، أو كائن يلتف حول الصفوف تحت مفتاح واحد مثل {"data": [...]}.
  2. فعِّل تسطير المتداخل (مُفعَّل افتراضيًا) لتوسيع الكائنات المتداخلة إلى أعمدة بتدوين النقاط. ألغِ تفعيله إن أردت إبقاء الكائنات المتداخلة كنص JSON في خلية واحدة.
  3. تُظهر لوحة الإخراج معاينة مفصولة بعلامات تبويب لما سيستقر في الورقة تمامًا — صف العناوين يتبعه صفوف البيانات. يُذكِر سطر الحالة عدد الصفوف المُصدَّرة.
  4. انقر تنزيل .xlsx لحفظ المصنّف. يُبنى الملف في متصفحك ويُنزَّل مباشرةً؛ فلا خادم.
  5. يحمِّل مثال مجموعة بيانات موظفين صغيرة؛ ويعيد مسح ضبط اللوحتين ويُعطِّل زر التنزيل.

الميزات الرئيسية#

  • ملف .xlsx حقيقي، لا CSV مُعاد تسميته. يُبنى المصنّف بـ SheetJS ويُنزَّل كثنائي، فيفتحه Excel أصليًا بأعمدة وأنواع وبنية ورقة سليمة.
  • ترتيب أعمدة ثابت مع بيانات فوضوية. تُحتسب الأعمدة كاتحاد مفاتيح كل صف، بترتيب الظهور الأول. الصفوف غير المتجانسة لا تُزحزح الأعمدة أو تُسيئ محاذاتها — الحقل المفقود يصير ببساطة خلية فارغة.
  • تسطيح بتدوين النقاط. تتوسع الكائنات المتداخلة إلى أعمدة مسماة (address.city، address.zip) فتصبح قيمها الداخلية قابلة للترشيح والفرز في الورقة.
  • معاينة مفصولة بعلامات تبويب. تعكس لوحة المخرجات محتويات الورقة تمامًا، فتتحقق من الشكل قبل التنزيل.
  • جهة العميل خالصة. يجري التحليل والتسطيح وبناء المصنّف كله في متصفحك. لا تغادر البيانات الصفحة أبدًا.

مثال عملي#

حمِّل مثال فتكون المدخلات مصفوفة من ثلاثة سجلات موظفين:

[
  { "id": 1, "name": "Ada Lovelace", "role": "Engineer",  "salary": 95000,  "skills": ["math", "logic"] },
  { "id": 2, "name": "Bob",         "role": "PM",        "salary": 120000, "skills": ["docs", "plan"] },
  { "id": 3, "name": "Grace",       "role": "Architect", "salary": 150000, "skills": ["systems", "c", "cobol"] }
]

تتشارك الصفوف الثلاثة المفاتيح نفسها، فالأعمدة هي id، name، role، salary، skills بهذا الترتيب. حقل skills مصفوفة، فيُحوَّل إلى نص داخل كل خلية. المعاينة المفصولة بعلامات تبويب:

id	name	role	salary	skills
1	Ada Lovelace	Engineer	95000	["math","logic"]
2	Bob	PM	120000	["docs","plan"]
3	Grace	Architect	150000	["systems","c","cobol"]

انقر تنزيل .xlsx فتحصل على مصنّف ورقته الأولى تحوي هذا المحتوى تمامًا، مع id / name / role / salary / skills كصف عناوين. من هناك، يعامل Excel salary كأرقام (فيجمعها ويوسطها) وskills كنص.

لو أُضيف صف رابع يحذف salary، فسيُصدر المُحوِّل الأعمدة الخمسة جميعًا ويترك تلك الخلية فارغة فحسب — لا إزاحات أعمدة، ولا بيانات مُساء محاذاتها في اتجاه التيار.

الأسئلة الشائعة#

لماذا يتحول كائني المتداخل إلى أعمدة بنقاط في أسمائها؟#

هذا خيار تسطير المتداخل. حقل مثل "address": {"city": "London", "zip": "NW1"} لا ينفع في خلية واحدة، فيُوسَّع إلى عمودَي address.city وaddress.zip — كلٌّ قابل للترشيح والفرز في Excel. أوقف الخيار إن فضّلت إبقاء الكائن كاملًا كسلسلة JSON في خلية address واحدة.

لماذا تُعرض مصفوفتي كـ ["math","logic"] في الخلية؟#

خلية الجدول تحمل قيمة واحدة، ومصفوفة JSON بنية متداخلة، فتُسلسَل عودةً إلى نص JSON وتُوضع في الخلية كما هي. هذا يبقي البيانات بلا فقدان — لا شيء يُسقَط — ويمكنك تحليلها لاحقًا. إن أردت كل عنصر مصفوفة في صفه، أعد هيكلة JSON المصدر قبل التحويل (سجل واحد لكل عنصر).

لصفوفي حقول مختلفة. ماذا يحدث للأعمدة؟#

يأخذ المُحوِّل اتحاد كل المفاتيح عبر كل صف، بالترتيب الذي تظهر به أولًا، ويستخدمه كعناوين. الصف الذي يفتقد حقلًا معينًا يحصل على خلية فارغة له. فإضافة صف بحقل manager إضافي تضيف ببساطة عمود manager؛ والصفوف التي دونه تبقى فارغة، ولا شيء مما هو موجود ينتقل.

هل تُرفع بياناتي إلى أي مكان لبناء .xlsx؟#

لا. يجري التحليل والتسطيح وبناء مصنّف SheetJS كله داخل متصفحك. يُنتَج التنزيل من ذاكرة مؤقتة ويُسلَّم مباشرةً إلى حوار حفظ المتصفح — فلا خادم خلفي ولا طلب شبكة.