سوف نأخذ في هذه المقالة أحد الطرق لمعالجة الملف وتحويله من شكل الى اخر (اكسل excel)، وذلك باستخدام محرر النصوص NotePad++ بالاضافة الى طريقة استخدام ال regex في البحث والاستبدال
المثال الذي سوف نعمل عليه به تجد أن هناك حوالي 500 شركة بمعلومات حولها ولكن طريقة العرض عن طريق الأسطر Row Based والأسهل هو تحويلها للاكسل ك Columns Based حتى يتم البحث والفلترة بها بسهولة، فالمهمة هو تحويل ملف في الصورة رقم 1 ملف الاكسل شيت في الصورة رقم 2.
في هذه المقالة سوف نوضح الطريقة لتحويل ذلك الملف، ويمكن اتباع هذه الأليه في التحويل لغيرها من الملفات مع الأخذ بالاعتبار ان بعض الخطوات قد تختلف بناء على بنية الملف المراد تحويله.
سوف يتم استخدام برنامج notepad++ في عمليات التحويل هذه، مع العلم بأنه يوجد برامج بديله له سواء في بيئة ويندوز أو لينوكس أو ماك، وبشكل عام اي برنامج محرر نصوص يتوفر فيه خاصية البحث والاستبدال بواسطة Extended Mode أو Regular Expression Mode فهو مناسب في الأمر.
نقطة أخرى وهو أن برنامج notepad++ لا يتعامل مع الملفات الضخمة بشكل جيد وقد يهنق Crashing البرنامج اثناء فتح اي ملف كبير أو اثناء القيام بخطوات التحويل، لذلك عند تعاملك مع أي ملف كبير يفضل أن تستخدم البرامج المخصصة للعمل مع الملفات الكبيرة مثل EditPad Lite وهو مجاني في ويندوز.
نبدأ الخطوات:
اولاً: دائماً الأفضل اظهار Symbols الموجودة والمخفية في الملف والتي عادة اغلبها يكون في أخر كل سطر لمعرفة نوعية ال New Lines، فبعد أن تقوم بفتح الملف تقوم عن طريق قائمة View ومن ثم اختيار Show all Characters
ويمكنك اخفائها عن طريق إزالة الصح على Show all Characters بعدما تعرف نوعية ال New Line، بعد أن قمت باظهارها، سوف تجد الان الرموز الموجودة في أخر كل سطر مثلاً CRLF أو CR أو LF على حسب طريقة الNew Line المستخدمة في الملف.
لماذا نقوم بمشاهدتها؟
لأنه أحياناً تجد ملفات مستخدم بها أكثر من طريقة New Line في نفس الوقت، وحتى تقوم بعملية التحويل المناسبة عليك أن تعرف نوعية ال New Line المستخدمة، في أخر هذه الملف سوف نضع مثال على ملف أخر به أكثر من New Line مستخدمة بطريقتي ويندوز ولينوكس ونعرف كيف يتم اصلاح ذلك من خلال ال notepad++.
ثانياً: بما أن برنامج الأكسل يستطيع قرائة ملفات CSV واختصاراً Comma Separated Value وهي تعني أن هناك معامل الفاصلة يفصل بين كل معلومة وأخرى، فنحن نحتاج أن نحول الملف لذلك الفورمات.
لذلك سوف نقوم بتحويل كل الأسطر New Lines الى فاصلة، وبالتالي جميع البيانات تكون في سطر واحد وذلك عن طريق عمل Find And Replace من خلال CTRL+F والذهاب للReplace ومن ثم اختيار Extended Mode والذي يسمح البحث من خلال \n,\r,\t وغيرها، وسوف تكون جملة البحث هي \r\n (أي CRLF) ويتم استبدالها بالفاصلة كما في الصورة التالية، وتقوم بعمل Replace All لتغيير كل الأحرف التي طابقت جملة البحث في هذا الملف.
ثالثاً: بعد عملية التحويل سوف تجد أن جميع البيانات هي في سطر واحد، وسوف نستفيد من علامة ==== حتى نفرق بين كل بيانات شركة على حدة ، لذلك سوف نقوم بعمل فصل بهذه العلامة واستبدالها بسطر جديد من خلال البحث عن ==== وتبديلها ب \r\n وعمل Replace All كما في الصورة التالية بعد تطبيق زر التبديل.
وهذا هو الملف ايضاً تم فتحه عن طريق النوت باد بوضع الRight To Left (بعد فتحه بالنوت باد نقوم ب CTRL+SHIFT التي على اليمين)، وايضاً تستطيع عمل ال Right To Left في ال Notepad++
كما هو واضح الملف أصبح مرتب الان وكل شركة في سطر، ونريد تحويله الى صيغة اكسل.
رابعاً: قبل التحويل سوف نحتاج لمسح البيانات المكررة في كل سطر (اسم المنشأة، رقم السجل التجاري والخ) لأنها سوف تكون كإسم للعمود في الأكسل ولا توجد حاجة لكتابتها في كل سطر، لذلك نقوم بمسح تلك الكلمات من خلال ايضاً البحث عن كل اسم ثابت ومسحه، وطريقة المسح هي عن طريق استبدال النص بنص فارغ كما بالصورة التالية
تم حذف اسم المنشأة: ولاحظ وجود : لأنها داخلة في النص الثابت في الملف، وسوف نكرر هذه الخطوة لجميع الأسماء الثابتة في الملف، اسم المنشأة: رقم السجل التجاري: ، الخ والتي تتواجد في بداية أي سطر في الصورة الأولى قبل التحويل:
خامساً: فقط للتأكد من ال Encoding وأنه UTF-8 (والتي تدل على وجود العلامة BOM للمزيد حول هذه العلامة أقرء هنا أساسيات لابد لأي مبرمج معرفتها الترميز) فهذه العلامة BOM ضرورية لملفات ال Office حتى تستطيع قرائه ال encoding بشكل صحيح (شاهد المثال هنا حل مشكلة توليد ملفات CSV بالعربي برمجياً وفتحها بالأكسل Excel) قم بفتح الملف بالNotepad++ والنظر ل Encoding وأنه UTF-8 وغيرها اذا كانت مثلاً UTF-8 Without BOM الى UTF-8.
سادساً: نقوم بتحويل امتداد الملف الى CSV عن طريق عمل Rename للملف وضع الامتداد csv، ومن ثم نقوم بفتحه بالاكسل بشكل عادي Double Click لأنه يقبل فتح ملفات CSV
الملف بعد فتحة بالأكسل سوف يكون بهذا الشكل، والأفضل حفظه بصغية الأكسل حتى يسهل العمل عليه في الأكسل فيما بعد.
سابعاً: حفظ الملف بصيغة أكسل xlxs من خلال File->Save As حتى يتحول الملف لصيغة الاكسل
يمكنك اخيراً إضافة السطر الأول واضافة أسماء الاعمدة وتعديل لونها قليلا بما تشاء
وهكذا تكون قد تمت عملية تحويل الملف بنجاح! وتستطيع بعدها بسهولة تطبيق اي Filter من خلال الأكسل حتى تفلتر الأسطر وتظهر من تريد بالضغط على الهيدر في العمود الذي تريده واختر Filter By Value وستجد القائمة المنسدلة وحينها اختر القيمة التي تريد وستجد أن الأسطر قم تمت فلترتها بناء على ما اخترته.
لماذا تحتاج لأن ترى كل الأحرف احياناً في الملف؟
هذا مثال لأحد الملفات فيه ايضاً مجموعه من البيانات وكان المطلوب هو تحويلها الى Excel، وعندما تفتح الملف بالنوت الباد العادي سوف تجد الصورة على اليمين ، ولكن عندما تفتحه بالنوت باد بلس بلس سوف تجد على اليسار، ولاحظ الفرق بأن LF لا يعرضه Notepad كمسافة بعكس ال Notepad++ والذي يعرض الLF بأنها مسافة (طبعاً مع تفعيل خاصية Show all Characters) التي سبق توضيحها
قبل أن تتعامل مع هذا الملف بالطريقة السابقة اعلاه، يجب أن يتم اعتماد New Lines واحدة في الملف وجعل الملف كله اما LF أو CRLF وال CRLF هي الأفضل في ويندوز، والأمر يتم كالتالي عن طريق تحويلها جميعها الUnix Format ومن ثم ارجاعها الى Windows Format
بعد ذلك سوف تتحول كلها الى LF قم بإعادة الخطوات مجدداً واختر Windows Format وهكذا جميعها سوف تتحول الى CRLF
الخطوة التالية هي حذف كل الاسطر الفارغه ويمكن استخدام خاصية البحث والتبديل ، ولكن كطريقة اخرى فأن الNotepad++ فيه مجموعه من الاضافات الرائعه التي تقوم بالعديد من المهام الاضافية لمحرر النصوص، وأحد هذه الاضافات هي TextFX حيث فيها العديد من المهام التي تفيد اثناء العمل على الملفات النصية، وأحدها هو أمر يقوم بحذف كل الأسطر الفارغه، فقط قم بتظليل كامل الملف CTRL+A واختر الخيار بعد تحميل الاضافة بالطبع
الان تحول الملف ورجع للشكل الصحيح
أحياناً، قد يكون في الملف فيه فاصلة , بين البيانات ، فقبل أن تحول الملف الى CSV عليك بحذف هذه الفاصلة (والا ستخرب عليك البيانات بعد تحويلها حيث ستفصل البيانات الأصلية عن بضعها) فيجب ان تقوم بعمل بحث عن , واستبدالها بأي شيء أخر وليكن مثلاً علامة الشرطة – ، وهكذا تكون قد عملت Cleanup للبيانات وجهزتها حتى تتحول الى CSV
بعد ذلك تستطيع القيام بنفس الطريقة الموضحة في هذا الملف في تحويل البيانات ، وذلك عن طريق استبدال ال CRLF بالفاصلة وبعدها تبديل ال == بالCRLF ومن ثم حفظ الملف CSV وفتحه بالأكسل وحفظه بصيغة الأكسل.
جميل.. شكرا لك
[…] post تحويل بيانات من ملف نصي الى اكسل excel باستخدام NotePad++ appeared first on […]