CodeGym /Kursy /Python SELF PL /Używanie szablonów do tworzenia zautomatyzowanych raportó...

Używanie szablonów do tworzenia zautomatyzowanych raportów

Python SELF PL
Poziom 44 , Lekcja 4
Dostępny

1. Zautomatyzowane raporty

Witaj w świecie automatyzacji raportów! Jeśli kiedykolwiek marzyłeś o tym, żeby tworzenie raportów było tak proste jak naciśnięcie jednego przycisku, to dobrze trafiłeś. Dziś nauczymy się tworzyć zautomatyzowane raporty przy użyciu szablonów. Porozmawiamy o tym, jak zoptymalizować ten proces, aby uniknąć rutyny i sprawić, by twoje raporty były tak dobre, jak najlepszy skrypt w Pythonie.

Dlaczego szablony?

Nikt nie lubi zajmować się nudną, monotonną pracą, szczególnie kiedy chodzi o raporty. A co jeśli każdy raport mógłby być generowany automatycznie, przyjmując dane i wstawiając je do wcześniej określonego formatu? Szablony pozwalają nam stworzyć podstawową strukturę, którą można wielokrotnie wykorzystać, wypełniając nowymi danymi. Oszczędza to czas i nerwy, a dodatkowo sprawia, że raporty są stabilne i estetyczne.

Zalety używania szablonów:

  • Szybkość i efektywność: Gotowy szablon pozwala tworzyć raporty szybciej niż kiedykolwiek.
  • Jednolity styl: Wszystkie raporty mają ten sam styl, co ułatwia czytanie i wygląda profesjonalnie.
  • Minimalizowanie błędów: Sprawdzona struktura minimalizuje błędy formatowania.
  • Łatwość modyfikacji: Zmiany w szablonie stosują się do wszystkich raportów, co upraszcza ich utrzymanie.

2. Tworzenie prostego szablonu raportu

Podstawowe elementy szablonów PDF w ReportLab

Do tworzenia szablonów raportów w ReportLab można użyć następujących podstawowych elementów:

  • Tekst i nagłówki: używaj elementów tekstowych do tworzenia tytułów, podtytułów i treści.
  • Tabele: do prezentacji danych w formie tabel.
  • Elementy graficzne: linie, prostokąty, koła i inne kształty dla wizualnego układu.
  • Obrazy: dodawanie logotypów i innych grafik dla profesjonalnego wyglądu.

Tworzenie szablonu używając SimpleDocTemplate

W ReportLab klasa SimpleDocTemplate pozwala tworzyć PDF z wcześniej określoną strukturą. Ta klasa wspiera dodawanie tekstu, tabel i innych elementów przy użyciu listy elements, co upraszcza tworzenie uporządkowanych dokumentów.

Tworzenie szablonu PDF-raportu z tekstem i tabelą

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

# Funkcja do tworzenia szablonu raportu
def create_pdf_template(filename="report_template.pdf"):
    doc = SimpleDocTemplate(filename, pagesize=A4)
    styles = getSampleStyleSheet()
    elements = []

    # Nagłówek raportu
    title_style = ParagraphStyle(
        "TitleStyle",
        parent=styles["Title"],
        fontSize=20,
        textColor=colors.darkblue,
        alignment=1,
        spaceAfter=20,
    )
    title = Paragraph("Szablon raportu o sprzedaży", title_style)
    elements.append(title)

    # Podtytuł
    subtitle_style = ParagraphStyle(
        "SubtitleStyle",
        parent=styles["Heading2"],
        fontSize=14,
        textColor=colors.gray,
        alignment=1,
        spaceAfter=10,
    )
    subtitle = Paragraph("Raport kwartalny", subtitle_style)
    elements.append(subtitle)

    # Tekst wstępu
    intro_text = """
    Ten szablon raportu został zaprojektowany, aby przedstawić dane sprzedażowe według regionów i kategorii produktów.
    Dane aktualizują się automatycznie, co pozwala używać szablonu do regularnych raportów.
    """
    elements.append(Paragraph(intro_text, styles["BodyText"]))
    elements.append(Spacer(1, 20))

    # Tabela danych
    table_data = [["Kategoria", "Region", "Sprzedaż"]]
    # Przykładowe dane do tabeli (zostaną zastąpione dynamicznymi danymi)
    sample_data = [["Produkty A", "Północ", "1200"], ["Produkty B", "Południe", "1300"], ["Produkty C", "Zachód", "1100"]]
    table_data.extend(sample_data)

    # Stylizacja tabeli
    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)

    # Zapisanie PDF
    doc.build(elements)
    print(f"Szablon raportu został pomyślnie zapisany jako {filename}")

# Tworzenie szablonu raportu
create_pdf_template()

Wyjaśnienie kodu

  1. Nagłówek i podtytuł: Użyto stylów TitleStyle i SubtitleStyle do formatowania nagłówka i podtytułu, co sprawia, że są one czytelne i wyróżnione wizualnie.
  2. Tekst główny: Tekst wyjaśnia, że raport jest szablonem przeznaczonym do automatyzacji raportowania.
  3. Tablica: Tablica służy jako struktura do wypełnienia danymi. Przykładowe dane (sample_data) można zastąpić rzeczywistymi wartościami podczas generowania raportu.
  4. Zapis: SimpleDocTemplate zapisuje PDF do pliku report_template.pdf.

3. Wypełnianie szablonu danymi

Automatyczne wypełnianie szablonu danymi

Teraz, gdy mamy podstawowy szablon, możemy stworzyć funkcję, która przyjmuje dane i automatycznie wypełnia tabelę. To przydatne do tworzenia raportów, gdzie dane pochodzą z bazy danych, API lub pliku.

Funkcja do automatycznego wypełniania szablonu

Python

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

    # Nagłówek raportu
    title = Paragraph("Raport o sprzedaży", styles["Title"])
    elements.append(title)

    # Podtytuł
    subtitle = Paragraph("Dane o sprzedaży za podany okres", styles["Heading2"])
    elements.append(subtitle)
    elements.append(Spacer(1, 20))

    # Dynamiczne wypełnienie tabeli danymi
    table_data = [["Kategoria", "Region", "Sprzedaż"]] + data
    table = Table(table_data)

    # Zastosowanie stylów do tabeli
    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)

    # Zapisanie PDF
    doc.build(elements)
    print(f"Raport został pomyślnie zapisany jako {filename}")

# Przykładowe dane do wypełnienia szablonu
data = [
    ["Produkty A", "Północ", "1200"],
    ["Produkty B", "Południe", "1300"],
    ["Produkty C", "Zachód", "1100"],
]

# Wypełnienie szablonu danymi
fill_pdf_template(data)

1
Опрос
Tworzenie plików pdf za pomocą ReportLab,  44 уровень,  4 лекция
недоступен
Tworzenie plików pdf za pomocą ReportLab
Tworzenie plików pdf za pomocą ReportLab
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION