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ı
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ı
- Başlıq və alt başlıq:
TitleStyle
vəSubtitleStyle
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. - Əsas mətn: Mətn izah edir ki, hesabat şablon olub, hesabatın avtomatlaşdırılması üçün nəzərdə tutulmuşdur.
- 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. - Yadda saxlanma:
SimpleDocTemplate
PDF-ireport_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ı
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ı
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.- 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.
- 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.
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:
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!
GO TO FULL VERSION