CodeGym /Corso Java /Python SELF IT /Utilizzo di template per creare report automatizzati

Utilizzo di template per creare report automatizzati

Python SELF IT
Livello 44 , Lezione 4
Disponibile

1. Report automatizzati

Benvenuto nel mondo dell'automazione dei report! Se hai mai sognato che creare report fosse semplice come premere un pulsante, sei nel posto giusto. Oggi impareremo a creare report automatizzati usando template. Parleremo di come ottimizzare questo processo, per evitare la noia e rendere i tuoi report tanto fighi quanto il tuo script Python più sicuro.

Perché i template?

Nessuno ama fare lavori noiosi e ripetitivi, specialmente quando si tratta di report. E se ogni report potesse essere generato automaticamente, prendendo i dati e inserendoli in un formato predefinito? I template ci consentono di creare una struttura di base da riutilizzare più volte, riempiendola con nuovi dati. Questo ti fa risparmiare tempo e fatica, e in più rende i report consistenti e belli.

Vantaggi dell'uso di template:

  • Velocità ed efficienza: Un template predefinito ti permette di creare report più velocemente che mai.
  • Stile uniforme: Tutti i report hanno lo stesso stile, rendendoli facilmente leggibili e dall'aspetto professionale.
  • Riduzione degli errori: La struttura già testata minimizza gli errori di formattazione.
  • Semplicità di modifica: I cambiamenti al template vengono applicati a tutti i report, facilitandone la manutenzione.

2. Creazione di un semplice template per un report

Elementi base dei template PDF in ReportLab

Per creare template di report in ReportLab puoi utilizzare i seguenti componenti di base:

  • Testo e titoli: utilizza elementi di testo per creare titoli, sottotitoli e testo principale.
  • Tabelle: per rappresentare i dati in forma tabellare.
  • Elementi grafici: linee, rettangoli, cerchi e altre forme per l'aspetto visivo.
  • Immagini: aggiungi loghi e altre immagini per un design professionale.

Creazione di un template usando SimpleDocTemplate

In ReportLab la classe SimpleDocTemplate permette di creare PDF con una struttura predefinita. Questa classe supporta l'aggiunta di testo, tabelle e altri elementi tramite una lista elements, facilitando così la creazione di documenti strutturati.

Creazione di un template PDF di report con testo e tabella

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

# Funzione per creare un template di report
def create_pdf_template(filename="report_template.pdf"):
    doc = SimpleDocTemplate(filename, pagesize=A4)
    styles = getSampleStyleSheet()
    elements = []

    # Titolo del report
    title_style = ParagraphStyle(
        "TitleStyle",
        parent=styles["Title"],
        fontSize=20,
        textColor=colors.darkblue,
        alignment=1,
        spaceAfter=20,
    )
    title = Paragraph("Template del report delle vendite", title_style)
    elements.append(title)

    # Sottotitolo
    subtitle_style = ParagraphStyle(
        "SubtitleStyle",
        parent=styles["Heading2"],
        fontSize=14,
        textColor=colors.gray,
        alignment=1,
        spaceAfter=10,
    )
    subtitle = Paragraph("Report per il trimestre", subtitle_style)
    elements.append(subtitle)

    # Testo principale
    intro_text = """
    Questo template di report è destinato alla rappresentazione dei dati di vendita per regioni e categorie di prodotti.
    I dati vengono aggiornati automaticamente, permettendo l'uso del template per report regolari.
    """
    elements.append(Paragraph(intro_text, styles["BodyText"]))
    elements.append(Spacer(1, 20))

    # Tabella per i dati
    table_data = [["Categoria", "Regione", "Vendite"]]
    # Esempio di dati per la tabella (sarà sostituito da dati dinamici)
    sample_data = [["Prodotti A", "Nord", "1200"], ["Prodotti B", "Sud", "1300"], ["Prodotti C", "Ovest", "1100"]]
    table_data.extend(sample_data)

    # Stile della tabella
    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)

    # Salvataggio del PDF
    doc.build(elements)
    print(f"Il template del report è stato salvato come {filename}")

# Creazione del template del report
create_pdf_template()

Spiegazione del codice

  1. Titolo e sottotitolo: Vengono utilizzati gli stili TitleStyle e SubtitleStyle per formattare titolo e sottotitolo, rendendoli chiari e visivamente accattivanti.
  2. Testo principale: Il testo spiega che il report è un template e serve per l'automazione della reportistica.
  3. Tabella: La tabella rappresenta una struttura per inserire i dati. I dati di esempio (sample_data) possono essere sostituiti con valori reali durante la generazione del report.
  4. Salvataggio: SimpleDocTemplate salva il PDF nel file report_template.pdf.

3. Compilazione del template con i dati

Compilazione automatica del template con i dati

Ora che abbiamo un template di base, possiamo creare una funzione che accetti dei dati e compili automaticamente la tabella. Questo è utile per creare report in cui i dati provengono da database, API o file.

Funzione per la compilazione automatica del template

Python

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

    # Titolo del report
    title = Paragraph("Report delle vendite", styles["Title"])
    elements.append(title)

    # Sottotitolo
    subtitle = Paragraph("Dati di vendita per il periodo specificato", styles["Heading2"])
    elements.append(subtitle)
    elements.append(Spacer(1, 20))

    # Compilazione dinamica della tabella con i dati
    table_data = [["Categoria", "Regione", "Vendite"]] + data
    table = Table(table_data)

    # Applicazione degli stili alla tabella
    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)

    # Salvataggio del PDF
    doc.build(elements)
    print(f"Il report è stato salvato con successo come {filename}")

# Esempio di dati per compilare il template
data = [
    ["Prodotti A", "Nord", "1200"],
    ["Prodotti B", "Sud", "1300"],
    ["Prodotti C", "Ovest", "1100"],
]

# Compilazione del template con i dati
fill_pdf_template(data)

Spiegazione del codice

  1. Funzione fill_pdf_template: Questa funzione accetta dati in formato lista e li inserisce nella tabella del template. Sostituisce i dati di esempio con i valori effettivi forniti alla funzione.
  2. Creazione di una tabella con dati dinamici: I dati vengono aggiunti ai titoli della tabella, creando una tabella completa pronta per essere visualizzata nel report.
  3. Salvataggio del report: Il report finale viene salvato come filled_report.pdf.

Automazione della creazione di report usando il template

Il processo di creazione dei report può essere completamente automatizzato, specialmente se i dati vengono aggiornati regolarmente. Ad esempio, è possibile creare una funzione che recuperi i dati da un database, li carichi nel template e salvi il report ogni mese.

Python

import datetime

def generate_monthly_report(data):
    # Creazione del nome file basato sulla data corrente
    today = datetime.date.today()
    filename = f"sales_report_{today.strftime('%Y_%m')}.pdf"

    # Compilazione del template con i dati e salvataggio
    fill_pdf_template(data, filename)
    print(f"Il report mensile è stato salvato come '{filename}'.")

# Esempio di dati per il report mensile

4. Flessibilità di utilizzo dei template

Il vantaggio di lavorare con i template è che puoi adattarli rapidamente per diversi tipi di report. Ad esempio, se vuoi aggiungere un grafico o un'altra tabella al report, puoi farlo facilmente con reportlab.

Aggiunta di grafici e tabelle

Ecco come aggiungere un grafico al report:

Python

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

# Funzione per creare un report con una tabella
def create_report_with_table(output_path):
    doc = SimpleDocTemplate(output_path, pagesize=letter)
    elements = []

    # Esempio di dati per la tabella
    data = [['Colonna 1', 'Colonna 2', 'Colonna 3'],
            ['Dati 1', 'Dati 2', 'Dati 3'],
            ['Dati A', 'Dati B', 'Dati 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)

# Generazione del report con una tabella
create_report_with_table("report_with_table.pdf")

Vantaggi dell'automazione dei report

Automatizzare i report usando template semplifica la creazione di documenti complessi e ti permette di concentrarti sull'analisi dei dati, invece che sulla loro formattazione. In futuro, quando il capo ti chiederà "lo stesso report, ma con i dati dell'ultimo mese", puoi sventolare la tua bacchetta magica PyPDF2 e ReportLab per aggiungere i dati al template esistente. È come avere un superpotere, ma senza dover indossare un cappello con il logo Python.

Armato con questi strumenti, sei pronto a creare report che non sono solo informativi, ma anche esteticamente accattivanti, con il minimo sforzo. Prova a integrare analisi diverse nei tuoi report, per aumentarne il valore e la qualità. Buona fortuna nella creazione di template che impressioneranno i tuoi colleghi e il management!

1
Опрос
Creazione di PDF con ReportLab,  44 уровень,  4 лекция
недоступен
Creazione di PDF con ReportLab
Creazione di PDF con ReportLab
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION