Generate PDF reports from SQL Server using Python, pyodbc, pandas and ReportLab. Build plant production summaries, tables, timestamps and reusable PDF outputs.
Architecture: SQL Server → PDF
SQL Server → PDF
SQL Server
Source plant records
dbo.tblEventpyodbc
Connect and query
SELECT ...pandas
Prepare report data
DataFrameReportLab
Build PDF document
SimpleDocTemplateTables
Add headers and rows
Table(...)PDF File
Save/share report
SQF_Report.pdf1. Install the PDF library
python -m pip install reportlab2. Prepare report data
# Assume df contains SQL Server records
report_df = df[["DT", "SQF_No", "ChargeNo", "Temp_Act"]].copy()
report_df["DT"] = report_df["DT"].astype(str)3. Create a simple PDF
from reportlab.lib.pagesizes import A4
from reportlab.platypus import SimpleDocTemplate, Paragraph
from reportlab.lib.styles import getSampleStyleSheet pdf = SimpleDocTemplate("SQF_Report.pdf", pagesize=A4)
styles = getSampleStyleSheet()
story = [Paragraph("SQF Production Report", styles["Title"])]
pdf.build(story)4. Add a DataFrame table
from reportlab.platypus import Table, TableStyle
from reportlab.lib import colors rows = [report_df.columns.tolist()] + report_df.astype(str).values.tolist()
table = Table(rows, repeatRows=1)
table.setStyle(TableStyle([ ("BACKGROUND", (0, 0), (-1, 0), colors.lightgrey), ("GRID", (0, 0), (-1, -1), 0.5, colors.grey),
]))
story.append(table)5. Use dated filenames
from datetime import datetime
name = datetime.now().strftime("SQF_Report_%Y%m%d_%H%M%S.pdf")
print(name)6. PDF report checklist
- Title and generation timestamp
- Source database/report filter
- Readable column widths and page layout
- Output folder exists and is writable
Frequently Asked Questions
Which Python library can create PDF reports?
ReportLab is a widely used Python library for programmatic PDF generation.
Can pandas write PDF directly?
pandas does not provide a general DataFrame-to-PDF writer; use a PDF library or another document/reporting layer.
Should PDF reports use the same cleaned DataFrame as Excel?
Yes. Reusing one validated DataFrame helps keep Excel and PDF outputs consistent.
