0Pricing
Python Academy · درس

معالجة التقارير دفعيًا

أنشئ التقارير تلقائيًا

معالجة التقارير دفعيًا درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.

أتمتة التقارير المتكررة

تتمثل الفائدة الحقيقية من openpyxl في الأتمتة: إنشاء عشرات التقارير المتشابهة من دون عمل يدوي. فكّر في أوراق مبيعات شهرية لكل منطقة، أو ملف ملخص لكل عميل.

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

تجميع البيانات

تبدأ التقارير المجمّعة بتجميع السجلات، مثلًا حسب المنطقة. يتولى Python القياسي هذه المهمة بسلاسة قبل بدء أي عمل على Excel.

records = [
    {'region': 'North', 'sales': 100},
    {'region': 'South', 'sales': 80},
    {'region': 'North', 'sales': 120},
]
groups = {}
for r in records:
    groups.setdefault(r['region'], []).append(r['sales'])
for region, sales in groups.items():
    print(region, sales, 'total', sum(sales))

ملف واحد لكل مجموعة

لكل مجموعة، تنشئ مصنفًا وتكتب الصفوف وتحفظه باسم مشتق من مفتاح المجموعة. ويكون جسم الحلقة هو الكود نفسه الذي كتبته لتقرير واحد، لكنه يتكرر فقط.

أسماء ملفات آمنة

قد تحتوي مفاتيح المجموعات على أحرف غير مسموح بها في أسماء الملفات. نظّفها أولًا حتى لا تفشل عملية الحفظ. وهذه هي فكرة slugify نفسها المستخدمة في مواضع أخرى.

import re
name = 'North/West Region 2024'
safe = re.sub(r'[^A-Za-z0-9]+', '_', name).strip('_')
print('report_' + safe + '.xlsx')

دالة قالب قابلة لإعادة الاستخدام

ضع تخطيط التقرير في دالة واحدة تستقبل البيانات وتعيد مصنفًا. ويؤدي استدعاؤها داخل الحلقة إلى الحفاظ على اتساق جميع التقارير، وإبقاء الكود وفق مبدأ DRY (لا تكرر نفسك).

ستحدد الدالة العناوين، وتكتب الصفوف، وتضيف المجاميع والأنماط، ثم تعيد wb.

إضافة صف ملخص

تنتهي معظم التقارير بالمجاميع. احسب التجميعات في Python أو باستخدام صيغة Excel، واكتبها في الصف الأخير. نحسب هنا قيم الملخص.

sales = [100, 120, 90, 110]
summary = {
    'count': len(sales),
    'total': sum(sales),
    'average': sum(sales) / len(sales),
    'max': max(sales),
}
for k, v in summary.items():
    print(k.ljust(8), v)

أوراق متعددة في ملف واحد

أحيانًا يكون استخدام ملف واحد، مع علامة تبويب لكل مجموعة، أفضل من استخدام ملفات عديدة. كرّر على المجموعات واستدعِ wb.create_sheet(title=group_name)، واكتب كل مجموعة في علامة تبويب خاصة بها. احفظ مرة واحدة في النهاية.

تنظيم مجلدات الإخراج

اكتب التقارير في مجلد إخراج مؤرَّخ حتى لا تستبدل عمليات التشغيل نتائج بعضها بعضًا. استخدم os.makedirs(path, exist_ok=True) لإنشائه بأمان، ثم ألحِق به أسماء الملفات.

import os
base = 'reports'
run_date = '2026-05-30'
out_dir = os.path.join(base, run_date)
path = os.path.join(out_dir, 'north.xlsx')
print('Would create dir:', out_dir)
print('File path:', path)

معالجة الأخطاء في الدُفعات

في الدُفعة الطويلة، يجب ألا توقف مجموعة واحدة بها خطأ بقية التنفيذ. غلّف معالجة كل تقرير بكتلة try/except، وسجّل الفشل، ثم واصل التنفيذ. تشغيل جزئي يكتمل أفضل من تشغيل كامل يتعطل في منتصفه.

جدولة المهمة

بعد أن يعمل البرنامج النصي، جدوِله (باستخدام cron أو Task Scheduler أو مهمة CI) ليعمل كل ليلة أو كل شهر. عندئذٍ تنتج الشيفرة نفسها تقارير جديدة تلقائيًا من دون تدخل بشري.

تسجيل التقدّم

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

يوفّر التسجيل أيضًا سجلًا بالتقارير التي نجحت، إذا احتجت إلى إعادة تشغيل التقارير الفاشلة فقط.

اختبار سريع

اختبر معرفتك بأتمتة الدُفعات.

مراجعة

يمكنكم الآن أتمتة إنشاء التقارير:

  • جمّع البيانات، ثم أنشئ مصنفًا واحدًا (أو ورقة واحدة) لكل مجموعة في حلقة تكرار
  • حوّل تنسيق التخطيط إلى دالة قالب قابلة لإعادة الاستخدام
  • نقِّ أسماء الملفات واكتبها في مجلدات إخراج مؤرَّخة
  • أضف صفوفًا تلخيصية، وغلّف معالجة كل تقرير بكتلة try/except، وجدوِل البرنامج النصي

يحوّل هذا ساعات من العمل اليدوي على جداول البيانات إلى مهمة تُنفَّذ بأمر واحد.

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

هل درس «معالجة التقارير دفعيًا» مجاني؟

نعم — نص درس «معالجة التقارير دفعيًا» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.

ماذا ستتعلم في «معالجة التقارير دفعيًا»؟

أنشئ التقارير تلقائيًا تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟

لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «معالجة التقارير دفعيًا»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟

نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. قراءة المصنفات
  2. كتابة الخلايا وتنسيقها
  3. الصيغ والمخططات
  4. معالجة التقارير دفعيًا
← العودة إلى Python Academy