تخطَّ إلى المحتوى

لماذا يُفسد Excel ملف CSV

تفقد الرموز البريدية الصفر البادئ، وتتحول رموز المنتجات إلى تواريخ، وتُقرَّب المعرّفات الطويلة بصمت. يحدث ذلك عند الفتح لا عند الحفظ — ولهذا لا يكتشف كثيرون أبدًا ما الذي حدث.

آخر مراجعة

الضرر يقع لحظة فتح الملف

هذا ما يجعل المشكلة صعبة التشخيص. ملف CSV ملف نصي: كل قيمة فيه مجرد أحرف، ولا شيء في الملف يحدد معنى أي منها. وعندما يفتحه Excel يخمّن نوعًا لكل عمود، ويحوّل القيم لتطابقه، ومن تلك اللحظة يحتفظ بالنسخة المحوّلة. احفظ الملف، فتُكتب التحويلات فيه.

إذن كان الملف سليمًا، والملف الذي حفظته ليس كذلك، ولم يحذّرك شيء في أي لحظة. فيستنتج الناس أن التصدير كان معطوبًا، ويعيدون التصدير، ويحصلون على النتيجة نفسها — لأن الإفساد يحدث على أجهزتهم هم، بعد التنزيل.

التحويلات الأربعة التي تسبب الضرر

تُحذف الأصفار البادئة. رمز بريدي مثل 01234، أو رمز إداري فرنسي، أو رقم حساب، أو رقم هاتف يبدأ بصفر — كلها تبدو أرقامًا، فيُحذف الصفر باعتباره بلا معنى. لكنه ليس بلا معنى؛ إنه جزء من المعرّف.

تُقرَّب الأرقام الطويلة. يحفظ جدول البيانات الأرقام بصيغة الفاصلة العائمة بنحو خمسة عشر رقمًا معنويًا، ولذلك يُقرَّب بصمت رقم الطلب أو رقم البطاقة الائتمانية أو رقم IMEI أو المعرّف ذو 64 بت — فتصبح الأرقام الأخيرة أصفارًا. تبدو الخلية رقمًا، لكنه الرقم الخطأ.

يُعاد تنسيق كل ما يشبه التاريخ، وفق الأعراف المحلية. فالقيمة 03/05 تعني مارس في بلد ومايو في بلد آخر، ولذلك يُنتج الملف نفسه مجموعتي بيانات مختلفتين إذا فُتح في مكتبين. والأسوأ أن قيمًا لم تكن تواريخ أصلًا تُحوَّل: فاسم جين مثل SEPT1 يصبح تاريخًا، وهي مشكلة بلغ من استمرارها أن علماء الوراثة أعادوا تسمية الجينات في النهاية بدلًا من مواصلة مقاومتها.

تتحول الأحرف المشكّلة والمعلَّمة إلى رموز مشوّهة. لا يحمل ملف CSV أي سجل لترميز أحرفه، ولذلك فإن ملفًا محفوظًا بترميز UTF-8 ويُقرأ بصفحة ترميز قديمة — أو العكس — يشوّه تحديدًا الصفوف التي تحتوي على أسماء بأحرف معلَّمة.

الحل: استورد الملف ولا تفتحه

لا تنقر نقرًا مزدوجًا أبدًا على ملف CSV يهمك. فالنقر المزدوج يمنح Excel الإذن بالتخمين، وهو يخمّن بثقة.

بدلًا من ذلك استخدم Data → From Text/CSV (البيانات ← من نص/CSV). تتيح لك نافذة الاستيراد تحديد نوع كل عمود قبل تحليل أي شيء — اجعل عمود الرمز البريدي وعمود المعرّف من نوع Text (نص)، فيصلان تمامًا كما هما في الملف. كما تتيح لك تحديد الترميز والفاصل بدلًا من استنتاجهما. يستغرق الأمر عشرين ثانية، وهو الحل كله.

وينطبق الأمر نفسه على Google Sheets: اختر File → Import (ملف ← استيراد)، وأوقف خيار «Convert text to numbers, dates and formulas» (تحويل النص إلى أرقام وتواريخ وصيغ). أما LibreOffice Calc فيعرض نافذة أنواع الأعمدة افتراضيًا، وهذا من المجالات القليلة التي يتصرف فيها ببساطة على نحو أفضل.

افحص الملف قبل استيراده

عندما يكون الخطأ قد وقع بالفعل، فإن الخطوة الأولى المفيدة هي النظر إلى الملف دون أن يلمسه أي جدول بيانات. عرض ملف CSV يُظهر القيم تمامًا كما تقولها البايتات — الأصفار البادئة موجودة، والأرقام الطويلة كاملة، والتواريخ نصًا كما كُتبت. وهذا يخبرك فورًا هل كان الخطأ في التصدير أم في الاستيراد.

كما يُظهر لك الأمرين اللذين لا يذكرهما ملف CSV عن نفسه أبدًا: الفاصل — فاصلة أو فاصلة منقوطة أو علامة جدولة، وتُصدِّر الإعدادات الإقليمية الأوروبية بالفاصلة المنقوطة لأن الفاصلة عندها هي الفاصل العشري — والترميز. ومعرفة الأمرين قبل الاستيراد تزيل معظم ما تبقى من تخمين.

إذا كنت أنت من يُنتج ملف CSV

بعض القرارات عند التصدير تمنع كل هذه المشكلات لاحقًا.

اكتب الملف بترميز UTF-8 مع علامة ترتيب البايتات (BOM) إذا كان موجّهًا إلى Excel على Windows. يعتمد Excel على هذه العلامة لاكتشاف UTF-8، ويشوّه الأحرف المعلَّمة من دونها — وهي من الحالات النادرة التي تكون فيها إضافة BOM هي القرار الصحيح لا مصدر إزعاج.

ضع علامات اقتباس حول كل حقل قد يُساء فهمه، وحول أعمدة المعرّفات دائمًا. علامات الاقتباس لا تمنع Excel من التحويل عند الفتح، لكنها تجعل القصد واضحًا لكل برنامج آخر يقرأ الملف.

فكّر في عدم استخدام CSV على الإطلاق. إذا كان المستلم يقبل JSON أو جدول بيانات حقيقيًا، فكلاهما يحمل أنواع البيانات صراحةً، ولا يعاني أي منهما من هذه الأعطال. ميزة CSV أن كل البرامج تقرؤه، وعيبه أن لا شيء يتفق على ما يقوله.

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

هل يمكنني التراجع عن الضرر بعد الحفظ؟

ليس بشكل موثوق. فالصفر البادئ المحذوف والرقم المقرَّب ضاعا — ولا يوجد في الملف ما يمكن استعادتهما منه. أعِد التصدير من المصدر الأصلي؛ ولهذا فإن الاحتفاظ بملف التصدير الأصلي دون تعديل يستحق المساحة التي يشغلها.

لماذا يُفتح ملف CSV كعمود واحد طويل؟

لأن الفاصل لا يطابق ما يتوقعه جدول البيانات — عادةً ملف بفواصل منقوطة يُفتح في إعدادات إقليمية تستخدم الفاصلة، أو العكس. تتيح لك نافذة الاستيراد تحديده، وهذا أسرع من تغيير الإعدادات الإقليمية لنظامك.

ما هذا الرمز الغريب في بداية اسم العمود الأول؟

إنه علامة ترتيب البايتات (BOM)، وقد قُرئت كنص بدلًا من أن تُفهم كإشارة إلى الترميز. وهي العلامة نفسها التي تصلح الأحرف المعلَّمة في Excel، ولهذا فهي مفيدة ومزعجة في آن واحد — ومعظم برامج تحليل CSV الجيدة تحذفها تلقائيًا.

هل يوجد معيار لملفات CSV؟

لا يوجد سوى مواصفة استرشادية من عام 2005 تصف ما تفعله معظم الأدوات، والكثير من البرامج يفعل شيئًا آخر. ولهذا تختلف الفواصل وعلامات الاقتباس ونهايات الأسطر والترميزات — ولهذا أيضًا فإن اكتشافها بدلًا من افتراضها هو النهج الوحيد الذي ينجح مع الملفات الحقيقية.

لماذا ينقسم صف واحد على عدة أسطر في محرر النصوص؟

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