Python自动生成分析报告需三步联动:pandas处理数据、matplotlib/seaborn可视化、openpyxl写Excel、pdfkit(基于wkhtmltopdf)转HTML为PDF;关键在选对工具、理清流程、解决中文显示、分页与图表刷新问题。

用Python自动生成分析报告并导出为PDF和Excel,核心在于“数据处理 + 可视化 + 文档编排”三步联动。关键不是堆砌库,而是选对工具、理清流程:pandas做数据整理,matplotlib/seaborn绘图,openpyxl或xlsxwriter写Excel,而PDF推荐使用pdfkit(基于wkhtmltopdf)或reportlab——前者适合HTML转PDF(易上手、样式灵活),后者适合完全代码控制布局(学习成本略高)。
一、准备环境与基础依赖
确保安装以下常用库:
-
pandas:读取、清洗、汇总数据 -
matplotlib或seaborn:生成统计图表(注意设置plt.rcParams['font.sans-serif']支持中文) -
openpyxl:向Excel写入带样式的表格、图表(支持.xlsx)、多Sheet管理 -
pdfkit+wkhtmltopdf:将HTML模板转为PDF(需单独下载wkhtmltopdf二进制并配置路径) -
jinja2:渲染动态HTML报告模板(插入标题、表格、图片路径等)
二、Excel报告:结构清晰、开箱即用
用openpyxl可实现表头加粗、列宽自适应、数字格式化、甚至嵌入图表。示例逻辑:
- 创建
Workbook,添加多个Worksheet(如“概览”“明细”“图表”) - 用
dataframe.to_excel(writer, sheet_name='概览', index=False)写入基础表 - 手动设置单元格样式:
ws['A1'].font = Font(bold=True),ws.column_dimensions['B'].width = 15 - 从matplotlib保存图表为PNG,再用
openpyxl.drawing.image.Image()插入工作表
三、PDF报告:HTML为桥,样式可控
比直接用reportlab更快落地的方式是:先用Jinja2生成含CSS样式的HTML,再用pdfkit转PDF。
立即学习“Python免费学习笔记(深入)”;
- 编写HTML模板(
report_template.html),预留{{ title }}、{{ table_html }}、{{ chart_path }}等变量 - 在Python中用
df.to_html(index=False, classes='table')生成表格HTML片段 - 保存matplotlib图表为本地PNG(如
chart1.png),路径传入模板 - 调用
pdfkit.from_file('report.html', 'output.pdf')一键输出 - 注意:CSS中用
@page { size: A4; margin: 1cm; }控制页边距,避免截断
四、整合成函数,一键生成双格式
封装主函数,统一输入数据源(CSV/Excel),自动完成清洗→分析→绘图→写Excel→生成HTML→转PDF:
- 函数接收参数:
input_path、output_prefix(如"sales_q3") - 内部按顺序执行各模块,出错时抛出明确提示(如“图表未生成,请检查matplotlib后端”)
- 最终输出:
sales_q3_report.xlsx和sales_q3_report.pdf - 建议加日志记录关键步骤耗时,便于后续优化批量任务
不复杂但容易忽略:中文显示问题(字体配置)、PDF分页断裂(CSS控制page-break-inside: avoid)、Excel图表刷新延迟(保存前调用wb.save()而非仅close())。把这三关调通,日常业务报告自动化就稳了。











