Python PDF Report Generator: Auto-Create Reports from Your Data
Stop spending 2 hours every week making the same report. This Python script generates formatted PDF reports automatically.
Install
pip install reportlab pandas
The Script
from reportlab.lib.pagesizes import letter
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib import colors
from reportlab.platypus import SimpleDocTemplate, Paragraph, Table, TableStyle, Spacer
from reportlab.lib.units import inch
import pandas as pd
from datetime import datetime
def generate_report(data, output_file):
doc = SimpleDocTemplate(output_file, pagesize=letter)
styles = getSampleStyleSheet()
story = []
# Title
story.append(Paragraph('Weekly Sales Report', styles['Title']))
story.append(Paragraph(f'Generated: {datetime.now().strftime("%B %d, %Y")}', styles['Normal']))
story.append(Spacer(1, 0.2*inch))
# Data table
table_data = [list(data.columns)] + data.values.tolist()
table = Table(table_data)
table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#2E86AB')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('GRID', (0,0), (-1,-1), 0.5, colors.grey),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, colors.HexColor('#F5F5F5')]),
]))
story.append(table)
doc.build(story)
print(f'Report saved: {output_file}')
# Example usage
sales_df = pd.DataFrame({
'Product': ['Widget A', 'Widget B', 'Widget C'],
'Units': [450, 280, 161],
'Revenue': ['$22,500', '$14,000', '$8,730'],
})
generate_report(sales_df, 'weekly_report.pdf')
Schedule Weekly Reports
import schedule, time
def weekly_job():
# load your data, generate report, email it
generate_report(load_sales_data(), 'weekly_report.pdf')
schedule.every().monday.at('08:00').do(weekly_job)
while True:
schedule.run_pending()
time.sleep(60)
Want 50 More Scripts?
The Python Business Automation Toolkit has PDF generators, email schedulers, data processors, and more.
$9 — instant download.
What reports are you generating manually every week?
Top comments (0)