مقال
لماذا يشوّه إكسل ملفات CSV الخاصة بك
معرف مريض يبدأ بثلاثة أصفار. جين اسمه SEPT2. رقم حساب من ستة عشر رقمًا. افتح أيًّا من هذه في جدول بيانات كملف CSV عادي ولن يكتفي مستورد إكسل بعرضها، بل يعيد كتابتها: تختفي الأصفار، ويتحول اسم الجين إلى تاريخ، ويفقد رقم الحساب آخر خاناته. لا شيء من هذا خللًا بالضبط، إنه ما يحدث عندما يقابل مخمّن أرقام وتواريخ عام الغرض نصًا لا يشبه رقمًا أو تاريخًا إلا شكلاً. إليك ما يحدث فعليًا لملف CSV بمجرد أن يفتحه إكسل، وكيف توقف ذلك قبل حدوثه.
اختفاء الأصفار البادئة
اكتب 02134 في خلية، ونوع العمود الافتراضي في إكسل، "عام"، يقرأه كرقم ويحذف الصفر البادئ: 2134. يصيب هذا أي رمز مخزّن كأرقام لكنه ليس كمية فعلًا، كالرموز البريدية الأمريكية أو الفرنسية، أو أرقام الموظفين أو الفواتير، أو أرقام الهواتف. لا يُفقد شيء تقنيًا من ملف CSV الأساسي، ويبقى النص المجاور للخلية دون تغيير، إلى أن تحفظ المصنف، عندها يعيد إكسل كتابة ما عرضه، وتختفي الأصفار نهائيًا. الحل هو إخبار إكسل أن العمود نص قبل أن تتاح له فرصة التخمين: عبر بيانات > من نص/CSV (أو الحصول على البيانات > من ملف) يمكنك ضبط نوع بيانات كل عمود صراحة، أو إضافة فاصلة عليا قبل قيمة في خلية واحدة لإجبارها على أن تكون نصًا.

النص يتحول إلى تواريخ دون استئذان
يبحث المخمّن نفسه أيضًا عن نص بشكل تاريخ. خلية تحتوي MAR1 أو SEPT2، تُقرأ كـ1 مارس أو 2 سبتمبر، تُحوَّل بصمت إلى قيمة تاريخ وتُعاد صياغتها، دون أي تحذير يظهر. هذا ليس افتراضيًا: في 2020 أعادت لجنة HUGO لتسمية الجينات تسمية نحو 27 رمز جين بشري، من بينها SEPT2 وMARCH1، تحديدًا لأن برامج الجداول كانت تحولها باستمرار إلى تواريخ كلما فُتحت مجموعة بيانات، وهي مشكلة خطيرة كفاية لدرجة أن استطلاعًا لأوراق الچينوم عام 2016 وجد أخطاء تصحيح تلقائي كهذه في نحو مقالة من كل خمس نشرت ملفات إكسل تكميلية. الدرس يتعدى أسماء الجينات: أي رمز أبجدي رقمي قصير يشبه يومًا وشهرًا معرّض للخطر بمجرد أن يفتح أحدهم ملف CSV الخاص بك في جدول بيانات، لا ملفك وحده.
الأرقام الطويلة جدًا تفقد خاناتها الأخيرة
يخزّن إكسل كل رقم كقيمة فاصلة عائمة بدقة 15 خانة معنوية، وهو حد توثقه مايكروسوفت مباشرة. رقم بطاقة أو حساب من ستة عشر رقمًا مثل 4111111111111111 يُقرَّب ليلائم ذلك، فتتحول الخانة الأخيرة أو الاثنتان الأخيرتان بصمت إلى صفر ولا تعود القيمة تلك التي كتبتها. تنسيق الخلية لاحقًا لن يعيد الخانات المفقودة، لأن الرقم المخزَّن الأساسي قُرِّب أصلًا؛ الحل الوحيد هو استيراد العمود كنص، أو إضافة فاصلة عليا قبل القيمة، قبل أن يتعامل إكسل معها كرقم إطلاقًا.

النص المشكَّل يتحول إلى رموز غير مفهومة
الترميز عطل منفصل عن التصحيح التلقائي. ملف CSV بلا علامة ترتيب بايت هو بايتات عادية؛ فإذا حُفظ بترميز UTF-8، سيفتحه إكسل على ويندوز عادة بافتراض ترميز صفحة النظام نفسه بدلًا من ذلك، فتخرج الأحرف المشكَّلة ورموز العملات والإيموجي كرموز مشوَّهة، كسلسلة café تظهر كشيء أقرب إلى café. الطريق الآمن عند إنتاج CSV لإكسل هو حفظه كـCSV UTF-8 أو إضافة علامة ترتيب بايت UTF-8؛ والطريق الآمن عند استهلاكه هو الاستيراد عبر بيانات > من نص/CSV، الذي يتيح لك اختيار ترميز المصدر صراحة بدل الوثوق بنقرة مزدوجة لتخمينه بشكل صحيح.
نقل البيانات بين الصيغ دون فتحها في إكسل
لا شيء من هذا خللًا في إكسل حقًا، إنه ما صُمم مخمّن الأرقام والتواريخ في جدول البيانات ليفعله، وينطبق أيًّا كانت طريقة فتح الملف، لا في إكسل وحده. أأمن طريقة لإعادة تشكيل ملف CSV أو التحقق من أن عمودًا يبقى نصًا فعلًا قبل وصوله لأي جدول بيانات هي العمل عليه مباشرة: يحلل محوّل البيانات لدينا CSV بمحلل قياسي يدرك الاقتباسات ولا يعيد تفسير نوع أي قيمة أبدًا، فيبقى رمز بريدي أو اسم جين النص عينه الذي أعطيته. يعمل بالكامل داخل متصفحك، ولا يُرفع ما تلصقه إلى أي مكان. لكن هذا يحمي خطوة التحويل فقط: إذا كان الناتج سيُفتح لاحقًا في جدول بيانات، ضع علامة على الأعمدة الحساسة كنص هناك أيضًا.
الأدوات المذكورة في هذا المقال
الأسئلة الشائعة
كيف أوقف إكسل عن إزالة الأصفار البادئة من CSV؟
لا تفتح الملف بنقرة مزدوجة. استورده بدلًا من ذلك عبر بيانات > من نص/CSV (أو الحصول على البيانات)، الذي يعرض منتقي نوع بيانات لكل عمود على حدة؛ اضبط عمود الرمز البريدي أو المعرف أو رقم الهاتف على نص قبل إنهاء الاستيراد. حل سريع لكل خلية هو كتابة فاصلة عليا قبل القيمة، مثل '02134، ما يفرض النص دون تغيير ما يُعرض.
لماذا حوّل إكسل معرفي أو رمزي إلى تاريخ؟
يبحث نوع العمود "عام" في إكسل بنشاط عن نص بشكل تاريخ، أنماط كلمة قصيرة متبوعة برقم، أو رقمين مفصولين بشرطة أو شرطة مائلة، ويحوّل كل ما يطابق، دون طلب تأكيد. هذا بالضبط ما أجبر إعادة تسمية رموز الجينات مثل SEPT2 وMARCH1 عام 2020. استورد العمود كنص، بالطريقة نفسها المستخدمة للأصفار البادئة، لإيقاف التخمين قبل حدوثه.
هل يتجنب تحويل CSV بطريقة أخرى هذه المشاكل كليًا؟
يتجنبها لخطوة التحويل تلك، لا للأبد. محلل يعامل كل حقل كنص عادي، مثل محوّل البيانات لدينا، لن يعيد كتابة رمز بريدي أو اسم جين أثناء تحويل CSV إلى JSON. لكن إذا انتهى الناتج مفتوحًا في جدول بيانات لاحقًا، منك أو ممن يستلمه، يحصل مستورد ذلك البرنامج على فرصة أخرى لإعادة تفسير القيم، لذا يجب وضع علامة على الأعمدة الحساسة كنص هناك أيضًا.