CodeGym /Kurslar /Python SELF AZ /Şablonlardan istifadə edərək avtomatlaşdırılmış hesabatla...

Şablonlardan istifadə edərək avtomatlaşdırılmış hesabatların yaradılması

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Avtomatlaşdırılmış hesabatlar

Hesabat avtomatlaşdırması dünyasına xoş gəlmisiniz! Əgər nə vaxtsa hesabat yaratmağın bir düyməni basmaq qədər asan olmasını arzulamısınızsa, doğru ünvandasınız. Bu gün şablonlardan istifadə edərək avtomatlaşdırılmış hesabatlar yaratmağı öyrənəcəyik. Rutindən yayınmaq və hesabatlarınızı Python skriptiniz qədər möhtəşəm etmək üçün bu prosesi necə optimallaşdıracağımıza baxacağıq.

Niyə şablonlar?

Heç kim cansıxıcı, monotond işlərlə məşğul olmağı sevmir, xüsusilə də mövzu hesabatlardırsa. Bəs hər bir hesabat avtomatik olaraq, məlumatları qəbul edib onları əvvəlcədən müəyyən edilmiş bir formata yerləşdirərək yaradıla bilsə necə olardı? Şablonlar bizə əsas quruluş yaratmağa imkan verir ki, bunu dəfələrlə yeni məlumatlarla doldurmaq olar. Bu sizin zamanınızı və əsəblərinizi qənaət edir, üstəlik, hesabatları sabit və dəqiq edir.

Şablonlardan istifadənin üstünlükləri:

  • Sürət və effektivlik: Hazır şablon hesabatları əvvəlkindən daha sürətli hazırlamağa imkan verir.
  • Bir vahid üslub: Bütün hesabatlar eyni üslubda olur ki, bu da oxumağı rahatlaşdırır və daha peşəkar görünür.
  • Səhvlərin azaldılması: Artıq yoxlanılmış struktura görə formatlama səhvləri minimuma endirilir.
  • Asan modifikasiya: Şablonlara edilən dəyişikliklər bütün hesabatlara tətbiq olunur ki, bu da onların dəstəklənməsini asanlaşdırır.

2. Sadə hesabat şablonunun yaradılması

ReportLab-da PDF şablonlarının əsas elementləri

Hesabat şablonları yaratmaq üçün ReportLab-da aşağıdakı əsas komponentlərdən istifadə edilə bilər:

  • Mətn və başlıqlar: Başlıqlar, alt başlıqlar və əsas mətn yaratmaq üçün mətn elementlərindən istifadə edin.
  • Cədvəllər: Məlumatları cədvəl formasında təqdim etmək üçün.
  • Qrafik elementlər: Xətlər, düzbucaqlılar, çevrələr və digər formalar üçün vizual tərtibat.
  • Şəkillər: Peşəkar dizayn üçün loqotiplər və digər şəkillər əlavə etmək.

SimpleDocTemplate istifadə edərək şablonun yaradılması

ReportLab-da SimpleDocTemplate sinfi əvvəlcədən təyin edilmiş quruluşa malik PDF yaratmağa imkan verir. Bu sinif mətn, cədvəllər və digər elementləri elements siyahısı vasitəsilə əlavə etməyi dəstəkləyir ki, bu da strukturlaşdırılmış sənədlərin yaradılmasını asanlaşdırır.

Mətn və cədvəl ilə PDF hesabat şablonunun yaradılması

Python

from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle
from reportlab.lib import colors

# Hesabat şablonunun yaradılması üçün funksiya
def create_pdf_template(filename="report_template.pdf"):
    doc = SimpleDocTemplate(filename, pagesize=A4)
    styles = getSampleStyleSheet()
    elements = []

    # Hesabat başlığı
    title_style = ParagraphStyle(
        "TitleStyle",
        parent=styles["Title"],
        fontSize=20,
        textColor=colors.darkblue,
        alignment=1,
        spaceAfter=20,
    )
    title = Paragraph("Satış hesabatı şablonu", title_style)
    elements.append(title)

    # Alt başlıq
    subtitle_style = ParagraphStyle(
        "SubtitleStyle",
        parent=styles["Heading2"],
        fontSize=14,
        textColor=colors.gray,
        alignment=1,
        spaceAfter=10,
    )
    subtitle = Paragraph("Rüblük hesabat", subtitle_style)
    elements.append(subtitle)

    # Əsas mətn
    intro_text = """
    Bu hesabat şablonu regionlar və məhsul kateqoriyaları üzrə satış məlumatlarını təqdim etmək üçün nəzərdə tutulmuşdur.
    Məlumatlar avtomatik olaraq yenilənir, bu da şablonun müntəzəm hesabatlıq üçün istifadə olunmasını təmin edir.
    """
    elements.append(Paragraph(intro_text, styles["BodyText"]))
    elements.append(Spacer(1, 20))

    # Məlumatlar üçün cədvəl
    table_data = [["Kateqoriya", "Region", "Satışlar"]]
    # Cədvəl üçün nümunə məlumatlar (dinamik məlumatlar ilə əvəz olunacaq)
    sample_data = [["Məhsul A", "Şimal", "1200"], ["Məhsul B", "Cənub", "1300"], ["Məhsul C", "Qərb", "1100"]]
    table_data.extend(sample_data)

    # Cədvəlin tərtibatı
    table_style = TableStyle([
        ('BACKGROUND', (0, 0), (-1, 0), colors.grey),
        ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
        ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
        ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
        ('BOTTOMPADDING', (0, 0), (-1, 0), 12),
        ('BACKGROUND', (0, 1), (-1, -1), colors.beige),
        ('GRID', (0, 0), (-1, -1), 1, colors.black),
    ])

    table = Table(table_data)
    table.setStyle(table_style)
    elements.append(table)

    # PDF-i yadda saxlamaq
    doc.build(elements)
    print(f"Hesabat şablonu uğurla {filename} kimi yadda saxlanıldı")

# Hesabat şablonunun yaradılması
create_pdf_template()

Kodun izahı

  1. Başlıq və alt başlıq: TitleStyleSubtitleStyle stillərindən başlıq və alt başlığı tərtib etmək üçün istifadə olunur ki, bu da onların asan oxunan və vizual şəkildə diqqət çəkən olmasını təmin edir.
  2. Əsas mətn: Mətn izah edir ki, hesabat şablon olub, hesabatın avtomatlaşdırılması üçün nəzərdə tutulmuşdur.
  3. Cədvəl: Cədvəl məlumatların doldurulması üçün struktur kimi təqdim olunur. Nümunə məlumatlar (sample_data) hesabatın yaradılması zamanı real dəyərlərlə əvəz olunacaq.
  4. Yadda saxlanma: SimpleDocTemplate PDF-i report_template.pdf faylı kimi yadda saxlayır.

3. Şablonun məlumatla doldurulması

Şablonun avtomatik olaraq məlumatla doldurulması

Artıq bizdə əsas şablon var, ona görə də məlumatları qəbul edən və cədvəli avtomatik dolduran bir funksiya yarada bilərik. Bu, məlumatların verilənlər bazasından, API vasitəsilə və ya fayldan gəldiyi hesabatların yaradılması üçün faydalıdır.

Şablonun avtomatik məlumatla doldurulması funksiyası

Python

def fill_pdf_template(data, filename="filled_report.pdf"):
    doc = SimpleDocTemplate(filename, pagesize=A4)
    styles = getSampleStyleSheet()
    elements = []

    # Hesabatın başlığı
    title = Paragraph("Satış hesabatı", styles["Title"])
    elements.append(title)

    # Alt başlıq
    subtitle = Paragraph("Göstərilən dövrlər üzrə satış məlumatları", styles["Heading2"])
    elements.append(subtitle)
    elements.append(Spacer(1, 20))

    # Cədvəli məlumatlarla dinamik doldurma
    table_data = [["Kateqoriya", "Region", "Satışlar"]] + data
    table = Table(table_data)

    # Cədvələ stil tətbiqi
    table.setStyle(TableStyle([
        ('BACKGROUND', (0, 0), (-1, 0), colors.grey),
        ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
        ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
        ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
        ('BOTTOMPADDING', (0, 0), (-1, 0), 12),
        ('BACKGROUND', (0, 1), (-1, -1), colors.beige),
        ('GRID', (0, 0), (-1, -1), 1, colors.black),
    ]))

    elements.append(table)

    # PDF-i yadda saxlamaq
    doc.build(elements)
    print(f"Hesabat uğurla {filename} kimi yadda saxlanıldı")

# Şablonu doldurmaq üçün nümunə məlumatlar
data = [
    ["Məhsul A", "Şimal", "1200"],
    ["Məhsul B", "Cənub", "1300"],
    ["Məhsul C", "Qərb", "1100"],
]

# Şablonun məlumatlarla doldurulması
fill_pdf_template(data)

Kodun izahı

  1. fill_pdf_template funksiyası: Bu funksiya siyahı formatında giriş məlumatlarını qəbul edir və onları şablon cədvəlinə daxil edir. O, nümunə məlumatları əvəz edir və real məlumatları funksiya daxilində yerləşdirir.
  2. Dinamik məlumatlara malik cədvəlin yaradılması: Məlumatlar cədvəlin başlıqlarına əlavə olunur, tam şəkildə hesabat üçün hazır olan cədvəl yaradılır.
  3. Hesabatın saxlanılması: Yekun hesabat filled_report.pdf kimi saxlanılır.

Şablonlardan istifadə etməklə hesabatların avtomatlaşdırılması

Hesabatlar yaratma prosesi tamamilə avtomatlaşdırıla bilər, xüsusən də məlumatlar müntəzəm olaraq yenilənirsə. Məsələn, məlumatları verilənlər bazasından əldə edən, onları şablona yükləyən və hər ay hesabat saxlayan bir funksiya yarada bilərsiniz.

Python

import datetime

def generate_monthly_report(data):
    # Cari tarixə əsaslanan fayl adı yaratmaq
    today = datetime.date.today()
    filename = f"sales_report_{today.strftime('%Y_%m')}.pdf"

    # Şablonun məlumatlarla doldurulması və saxlanması
    fill_pdf_template(data, filename)
    print(f"Aylıq hesabat '{filename}' olaraq saxlanıldı.")

# Aylıq hesabat üçün nümunə məlumatlar

4. Şablonlardan istifadənin elastikliyi

Şablonlarla işləməyin üstünlüyü onların müxtəlif hesabatlar üçün tez uyğunlaşdırıla bilməsidir. Tutaq ki, hesabatınıza diaqram və ya cədvəl əlavə etmək istəyirsiniz. reportlab istifadə edərək, bunu çox asanlıqla edə bilərsiniz.

Diaqram və cədvəllərin əlavə edilməsi

Hesabata diaqram əlavə etməyin yolu budur:

Python

from reportlab.lib import colors
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle

# Cədvəllə hesabat yaratmaq üçün funksiya
def create_report_with_table(output_path):
    doc = SimpleDocTemplate(output_path, pagesize=letter)
    elements = []

    # Cədvəl üçün nümunə məlumatlar
    data = [['Sütun 1', 'Sütun 2', 'Sütun 3'],
            ['Məlumat 1', 'Məlumat 2', 'Məlumat 3'],
            ['Məlumat A', 'Məlumat B', 'Məlumat C']]

    table = Table(data)
    style = TableStyle([
        ('BACKGROUND', (0, 0), (-1, 0), colors.grey),
        ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
        ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
        ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
        ('BOTTOMPADDING', (0, 0), (-1, 0), 12),
        ('BACKGROUND', (0, 1), (-1, -1), colors.beige),
        ('GRID', (0, 0), (-1, -1), 1, colors.black),
    ])
    table.setStyle(style)

    elements.append(table)
    doc.build(elements)

# Cədvəllə hesabat yaratmaq
create_report_with_table("report_with_table.pdf")

Hesabatların avtomatlaşdırılmasının üstünlükləri

Şablonlardan istifadə edərək hesabatların avtomatlaşdırılması mürəkkəb sənədlər yaratmağı asanlaşdırır və sizi məlumatların formatlaşdırılmasından daha çox onların təhlilinə yönəldir. Gələcəkdə rəhbəriniz sizdən «eyni hesabatı, amma son ayın məlumatları ilə» istəsə, PyPDF2 və ReportLab sehr çubuğunu yelləyərək mövcud şablona öz məlumatlarınızı əlavə edə bilərsiniz. Bu, Python loqotipli şapka taxmadan super gücə malik olmaq kimidir.

Beləliklə, bu alətlərlə silahlanaraq, yalnız informativ deyil, həm də estetik baxımdan cəlbedici hesabatlar yaratmağa hazırsınız, bunlar üçün minimal səy tələb olunur. Hesabatlarınıza müxtəlif analitikləri inteqrasiya etməyə çalışın ki, onların dəyərini və keyfiyyətini artırın. Həmkarlarınızı və rəhbərliyinizi təəccübləndirəcək şablonlar yaratmaqda uğurlar arzulayıram!

1
Опрос
PDF yaratmaq ReportLab ilə,  44 уровень,  4 лекция
недоступен
PDF yaratmaq ReportLab ilə
PDF yaratmaq ReportLab ilə
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION