导读:本期聚焦于小伙伴创作的《如何用Python实现分析报告自动生成并输出为PDF和Excel格式》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何用Python实现分析报告自动生成并输出为PDF和Excel格式》有用,将其分享出去将是对创作者最好的鼓励。

在数据处理和业务分析场景中,定期生成格式统一的分析报告是高频需求,通过Python可以实现从数据读取、分析计算到PDF和Excel文件输出的全流程自动化,避免重复的人工操作。

如何用Python实现分析报告自动生成并输出为PDF和Excel格式

核心依赖库介绍

实现PDF和Excel输出需要用到以下常用库:

  • pandas:用于数据读取、清洗和分析计算,是处理结构化数据的核心工具
  • openpyxl:用于生成和编辑Excel文件,支持设置单元格样式、合并单元格等操作
  • reportlab:用于生成PDF文件,支持添加文本、表格、图片等元素,可自定义排版样式
  • matplotlib:用于生成分析图表,可导出为图片插入到PDF报告中

Excel报告生成实现

首先演示如何将分析结果输出为Excel文件,包含数据表和简单的统计结果。

基础Excel输出示例

以下代码实现读取CSV数据,计算基础统计指标,输出到Excel文件并设置基础样式:

import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import Font, Alignment

# 读取原始数据,假设数据文件为sales_data.csv,包含日期、销售额、地区字段
data = pd.read_csv("sales_data.csv")

# 计算各地区总销售额
region_sales = data.groupby("地区")["销售额"].sum().reset_index()

# 输出到Excel文件
with pd.ExcelWriter("销售分析报告.xlsx", engine="openpyxl") as writer:
    # 写入原始数据表
    data.to_excel(writer, sheet_name="原始数据", index=False)
    # 写入统计结果表
    region_sales.to_excel(writer, sheet_name="地区销售统计", index=False)
    
    # 获取工作簿对象,设置表头样式
    workbook = writer.book
    for sheet_name in writer.sheets:
        worksheet = writer.sheets[sheet_name]
        # 设置表头字体为加粗,居中对齐
        for cell in worksheet[1]:
            cell.font = Font(bold=True)
            cell.alignment = Alignment(horizontal="center")
        # 设置列宽自适应
        for column in worksheet.columns:
            max_length = 0
            column_letter = column[0].column_letter
            for cell in column:
                try:
                    if len(str(cell.value)) > max_length:
                        max_length = len(str(cell.value))
                except:
                    pass
            adjusted_width = (max_length + 2) * 1.2
            worksheet.column_dimensions[column_letter].width = adjusted_width

print("Excel报告生成完成")

PDF报告生成实现

PDF报告适合用于正式的场景分发,以下演示如何生成包含分析结论、表格和图表的PDF文件。

基础PDF输出示例

以下代码实现生成包含标题、统计表格、分析结论的PDF报告:

from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import SimpleDocTemplate, Paragraph, Table, TableStyle
from reportlab.lib import colors
import pandas as pd
import matplotlib.pyplot as plt

# 先生成分析图表并保存为图片
data = pd.read_csv("sales_data.csv")
region_sales = data.groupby("地区")["销售额"].sum().reset_index()
plt.figure(figsize=(8, 4))
plt.bar(region_sales["地区"], region_sales["销售额"])
plt.title("各地区销售额对比")
plt.xlabel("地区")
plt.ylabel("销售额")
plt.savefig("sales_chart.png", dpi=100, bbox_inches="tight")
plt.close()

# 生成PDF报告
doc = SimpleDocTemplate("销售分析PDF报告.pdf", pagesize=A4)
styles = getSampleStyleSheet()
# 自定义标题样式
title_style = ParagraphStyle(
    name="TitleStyle",
    parent=styles["Heading1"],
    fontSize=16,
    alignment=1,  # 居中对齐
    spaceAfter=20
)
# 自定义正文样式
body_style = ParagraphStyle(
    name="BodyStyle",
    parent=styles["Normal"],
    fontSize=12,
    leading=18,
    spaceAfter=10
)

# 组装报告内容
content = []
# 添加标题
content.append(Paragraph("2024年销售分析报告", title_style))
# 添加分析结论
content.append(Paragraph("本次分析覆盖全国5个销售区域,统计周期为全年,核心结论如下:", body_style))
content.append(Paragraph("1. 华东地区销售额最高,占总销售额的35%", body_style))
content.append(Paragraph("2. 西北地区销售额最低,仍有较大增长空间", body_style))
# 添加统计表格
table_data = [["地区", "总销售额"]] + region_sales.values.tolist()
table = Table(table_data, colWidths=[200, 200])
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"),
    ("GRID", (0, 0), (-1, -1), 1, colors.black)
]))
content.append(table)
# 添加图表
from reportlab.platypus import Image
img = Image("sales_chart.png", width=400, height=200)
content.append(img)

# 生成PDF文件
doc.build(content)
print("PDF报告生成完成")

常见问题与优化建议

  • Excel输出时如果需要兼容旧版本Office,可以将引擎切换为openpyxl的兼容模式,避免文件无法打开
  • PDF生成时如果需要支持中文字体,需要额外注册中文字体文件,避免中文显示乱码
  • 可以将报告生成逻辑封装为函数,结合定时任务实现定期自动生成报告,进一步提升效率
  • 如果数据量较大,建议先对数据进行分页处理,避免生成的Excel或PDF文件过大无法打开

PythonPDF输出Excel输出报告自动生成修改时间:2026-07-19 06:27:25

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。