data · 9 دقائق قراءة

لماذا يفتح ملف CSV عندك كطلاسم في Excel

ثلاثة أعطال مختلفة تنتج ثلاث كوارث مختلفة، وكلّها من السبب الجذري نفسه: CSV لا يصف نفسه.

تصدّر قائمة عملاء. تفتحها في Excel. الأسماء العربية جدار من Ø وÙ، وكل سطر محشور في العمود A، وأرقام العملاء فقدت أصفارها في المقدّمة.

ثلاثة أعطال منفصلة. سبب واحد: ملف CSV لا يحمل بيانًا لما هو. لا ترميز المحارف، ولا الفاصل، ولا نوع أي عمود. على كل قارئ أن يخمّن، وExcel يخمّن بقواعد كانت معقولة سنة 1995.

العطل الأول: الترميز

ملفك بترميز UTF-8، وهو الترميز الذي يستعمله كل شيء تقريبًا منذ عشرين سنة. يفتحه Excel على افتراض صفحة الرموز الإقليمية لنظامك — Windows-1256 للعربية، وWindows-1252 لأوروبا الغربية.

البايتات صحيحة. الجدول المستعمل لقراءتها ليس كذلك. الحرف العربي بايتان في UTF-8، وقراءته بايتًا بايتًا عبر Windows-1252 تجعل هذين البايتين Ø وشيئًا آخر. من هنا صار أحمد إلى أحمد.

قراءة بـUTF-8بترتيب البايتاتأحمدالبايتاتD8A3D8ADD985D8AFقراءة بـWindows-1252Ø£Ø­ÙØ¯
صارت أربعة حروف ثمانية محارف، ولم يتغيّر بايت واحد. الشرطة اللينة عند AD غير مرئية، والنقاط الثلاث عند 85 علامة طباعية — ولهذا تبدو الفوضى اعتباطية. لم يضع شيء، فإعادة قراءة الملف نفسه بترميز UTF-8 تسترجع الاسم بالضبط.

الإصلاح ثلاثة بايتات غير مرئية في أول الملف. علامة ترتيب بايتات UTF-8 — EF BB BF — تخبر Excel أن الملف بترميز UTF-8 فيكفّ عن التخمين. كل أداة على هذا الموقع تصدّر CSV تكتب واحدة.

إن كان عندك ملف معطوب أصلًا، فالإصلاح قابل للرجوع: لم يضع شيء، وإنما أُسيئت قراءة البايتات، فإعادة قراءتها صحيحةً تسترجع النص.

العطل الثاني: الفاصل

ملفك مفصول بفواصل. Excel على نظام أوروبي أو شرق أوسطي يتوقّع فواصل منقوطة، فلا يجد فاصلًا إطلاقًا ويضع كل سطر كاملًا في خلية واحدة.

هذا ليس خللًا. في المناطق التي تكون فيها الفاصلة هي الفاصل العشري — 3,14 بدل 3.14 — لا تستطيع الفاصلة أن تفصل الحقول أيضًا، فتستعمل تلك النسخ من Excel فاصلة منقوطة وتسمّيها «فاصل القوائم». الملف نفسه صحيح على جهاز وغير مقروء على الذي يليه.

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

العطل الثالث: Excel يغيّر بياناتك

هذا هو الذي يُحدث ضررًا باقيًا، لأن الملف يفتح ومظهره سليم.

يقرّر Excel ما في كل عمود بالنظر إليه، وهو واثق:

  • 00123 تصير 123. الأصفار في المقدّمة لا وزن لها في العدد، فرمز المنتج صار الآن رمز منتج آخر.
  • +962 79 555 1234 يصير شيئًا آخر تمامًا، أو خطأً، لأنه يبدأ بعلامة زائد.
  • 1-2 يصير تاريخًا. كذلك 3/4. كذلك — على نحو مشهور — أسماء جينات بعينها، ولهذا أعادت أوساط علم الوراثة تسمية عدّة جينات سنة 2020 بدل مواصلة معركة الجداول.
  • العدد الطويل يصير ترميزًا علميًّا، وبعد خمسة عشر رقمًا تصير الأرقام الأخيرة أصفارًا. أرقام بطاقات الائتمان وأرقام IBAN أطول من خمسة عشر رقمًا.

لا شيء من هذا يُستردّ بالإغلاق دون حفظ إن كنت قد حفظت. القيم الأصلية ذهبت، والملف ما زال يبدو جدولًا سليمًا.

ما الذي يصلحه فعلًا

استعمل صيغة xlsx بدل CSV. هذا يحلّ الأعطال الثلاثة دفعةً واحدة. الصيغة تعلن ترميزها بنفسها، ولا فاصل فيها، وتخزّن نوع كل خلية صراحةً. رقم العميل المكتوب نصًّا يبقى نصًّا.

تحويل CSV إلى مصنّف حقيقي يأخذ ثوانيَ ويزيل صنف المشكلة كلّه. إن كنت تتحكّم بالتصدير، فصدّر xlsx.

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

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

لماذا لا نصلح Excel وحسب؟

سؤال وجيه. السلوك عمره عقود، وتغييره يكسر قدرًا هائلًا من العمل القائم — فكل ملف يفتح اليوم صحيحًا يجب أن يستمرّ كذلك. أضافت Microsoft خيار «لا تحوّل» في الإصدارات الأخيرة، لكن الإعدادات الافتراضية بقيت كما كانت.

عمليًّا، الجواب ألّا تصارعه. لم يكن CSV مواصفةً قطّ؛ بل عرفًا صار معيارًا بحكم الأمر الواقع دون أن يكتسب البيانات الوصفية التي تحتاجها الصيغة. حيث تكون البيانات مهمّة، استعمل صيغةً تصف نفسها.

النسخة القصيرة

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

الثلاثة كلّها تختفي إن أرسلت ملف xlsx بدلًا من ذلك.

أسئلة

لماذا يعرض ملف CSV عندي النص العربي أو الحروف ذات العلامات كطلاسم في Excel؟

الملف بترميز UTF-8، وقد فتحه Excel على افتراض ترميز إقليمي قديم. عندها يُقرأ كل حرف حرفين أو ثلاثة خاطئة. لم يتلف شيء — البايتات صحيحة وExcel يقرؤها خطأ. الاستيراد مع ذكر الترميز صراحةً، بدل النقر المزدوج، يصلح ذلك.

لماذا يقع سطر CSV كامل في عمود واحد؟

يتوقّع Excel فاصل القوائم المأخوذ من إعداداتك الإقليمية، وهو فاصلة منقوطة في كثير من أوروبا وفاصلة في غيرها. فإن أُعطي الخطأ منهما لم يجد حقولًا يقسم عندها، فيذهب السطر كلّه إلى الخلية الأولى. استعمل البيانات ← من نص واذكر الفاصل.

كيف أمنع Excel من حذف الأصفار في المقدّمة؟

استورد بدل أن تفتح، واضبط نوع العمود على نص عند خطوة الاستيراد. يعامل Excel العمود غير المنسّق أعدادًا، و007 كعدد هي 7. متى تحوّلت فلا سبيل إلى استرجاع الأصل، ولهذا يجب أن يقع الإصلاح قبل أن تحطّ البيانات.

كيف أمنع Excel من تحويل القيم إلى تواريخ؟

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

ما علامة ترتيب البايتات ولماذا تصلح ملف CSV عندي؟

علامة ترتيب البايتات متتالية قصيرة في أول الملف تمامًا تعلن ترميزه. يحترمها Excel، فملف UTF-8 يحمل واحدة يفتح صحيحًا بنقرة مزدوجة حيث لا يفتح الملف نفسه بدونها. تعني أيضًا أن عنوان العمود الأول قد يبدو تالفًا في الأدوات التي لا تتوقّعها.

أدوات من هذا الدليل

المزيد من أدوات البيانات — كلّها تعمل في متصفّحك، ولا واحدة منها ترفع ملفًّا.