كيف يمكنك منع تجريد الأصفار البادئة عند استيراد مستند Excel باستخدام C#

StackOverflow https://stackoverflow.com/questions/22879

  •  09-06-2019
  •  | 
  •  

سؤال

أنا قادر على الاتصال بملف Excel وقراءته دون أي مشكلة.ولكن عند استيراد بيانات مثل الرموز البريدية التي تحتوي على أصفار بادئة، كيف يمكنك منع برنامج Excel من تخمين نوع البيانات وفي عملية إزالة الأصفار البادئة؟

هل كانت مفيدة؟

المحلول

أعتقد أنه يتعين عليك تعيين الخيار في سلسلة الاتصال الخاصة بك لفرض استيراد النص بدلاً من اكتشافه تلقائيًا.

Provider=Microsoft.ACE.OLEDB.12.0;
    Data Source=c:\path\to\myfile.xlsx;
    Extended Properties=\"Excel 12.0 Xml;IMEX=1\";

قد يختلف عدد الأميال الخاصة بك اعتمادًا على الإصدار الذي قمت بتثبيته.الخاصية الموسعة IMEX=1 تخبر Excel بمعاملة البيانات المختلطة كنص.

نصائح أخرى

البادئة بـ "

إن إضافة بادئة لمحتويات الخلية بـ "يفرض على Excel رؤيتها كنص بدلاً من رقم.لن يتم عرض "" في Excel.

هناك اختراق للتسجيل يمكن أن يجبر Excel على قراءة أكثر من الصفوف الثمانية الأولى عند قراءة عمود لتحديد النوع:

يتغير

HKLM\Software\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows 

أن يكون 0 لقراءة كافة الصفوف، أو رقم آخر لتعيينه على هذا العدد من الصفوف.

لا يعني ذلك أن هذا سيكون له أداء طفيف.

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

أعتقد أن هذا سيحدد صراحةً أن محتوى العمود هو نص ويجب التعامل معه على هذا النحو.

دعنا نذهب للعمل.

إن حفظ الملف كملف نصي محدد بعلامات جدولة قد نجح أيضًا بشكل جيد.

--- لسوء الحظ ، لا يمكننا الاعتماد على أعمدة مستند Excel للبقاء بتنسيق معين حيث أن المستخدمين سوف يلصقون البيانات فيها بانتظام.لا أريد أن يتعطل التطبيق إذا كنا نعتمد على نوع بيانات معين لعمود.

البادئة بـ "ستعمل، هل هناك طريقة معقولة للقيام بذلك برمجيًا بمجرد وجود البيانات بالفعل في مستند Excel؟

إرسال القيمة 00022556 مثل '=" 00022556"' من خادم Sql هي طريقة ممتازة للتعامل مع مشكلة الصفر الرائدة

أضف " " قبل السلسلة.ستجعل السلسلة تظهر في علامة تبويب جديدة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top