Python绘制Excel折线图 openpyxl完整代码

发布时间:2026/7/2 14:18:49

Python绘制Excel折线图 openpyxl完整代码 Python绘制Excel折线图 openpyxl完整代码 本文用Python openpyxl在 Excel 里自动插入折线图含完整可运行代码适合周报、实验报告等场景。场景说明每周五下午你都要对着销售数据手动拖拽生成折线图选中 A 列日期、B 列销售额插入图表调整标题颜色保存。这一套操作 10 分钟打底还容易点错数据范围。更扎心的是下周数据变了又得重来一遍。用 openpyxl 写个脚本30 行代码自动搞定读取数据 → 创建折线图 → 设置样式 → 保存文件。跑一次 3 秒以后每周更新数据源双击运行就出图。完整脚本# -*- coding: utf-8 -*- # 依赖安装pip install openpyxl import openpyxl from openpyxl.chart import LineChart, Reference from openpyxl.chart.label import DataLabelList from openpyxl.styles import Font, Color from openpyxl.utils import get_column_letter import random from datetime import datetime, timedelta # ---------- 1. 创建模拟数据实际使用时替换成你的 Excel 文件---------- def create_sample_data(): 生成一份模拟的销售周报数据7天 wb openpyxl.Workbook() ws wb.active ws.title 销售数据 # 标题行 ws[A1] 日期 ws[B1] 销售额元 # 生成最近7天数据 base_date datetime.now() - timedelta(days7) for i in range(7): date_str (base_date timedelta(daysi)).strftime(%Y-%m-%d) ws.cell(rowi2, column1, valuedate_str) ws.cell(rowi2, column2, valuerandom.randint(3000, 8000)) return wb, ws # ---------- 2. 核心插入折线图 ---------- def insert_line_chart(ws, data_start_row2, data_end_row8): 在指定工作表插入折线图 :param ws: openpyxl 工作表对象 :param data_start_row: 数据起始行含标题行下一行 :param data_end_row: 数据结束行 # 创建折线图对象 chart LineChart() chart.title 本周销售额趋势 chart.style 10 # 使用内置样式 chart.y_axis.title 销售额元 chart.x_axis.title 日期 chart.width 18 # 图表宽度英寸 chart.height 10 # 引用数据区域B列销售额 data Reference(ws, min_col2, min_row1, max_rowdata_end_row) # 引用类别轴A列日期 cats Reference(ws, min_col1, min_rowdata_start_row, max_rowdata_end_row) # 添加数据系列 chart.add_data(data, titles_from_dataTrue) chart.set_categories(cats) # 设置系列样式 s chart.series[0] s.graphicalProperties.line.solidFill 4F81BD # 线条颜色 s.graphicalProperties.line.width 25000 # 线条粗细EMUs # 显示数据标签 s.dLbls DataLabelList() s.dLbls.showVal True # 添加图表到工作表放在 E5 单元格位置 ws.add_chart(chart, E5) # ---------- 3. 主程序 ---------- def main(): # 创建或加载工作簿 wb, ws create_sample_data() # 插入折线图 insert_line_chart(ws, data_start_row2, data_end_row8) # 保存文件 output_path 销售周报_自动折线图.xlsx wb.save(output_path) print(f✅ 图表已生成文件保存在{output_path}) # 提示实际使用时替换 create_sample_data() 为你自己的数据加载逻辑 if __name__ __main__: main()使用步骤1.安装依赖打开终端WinR → cmd输入pip install openpyxl2.运行脚本把上面的代码保存为auto_chart.py在终端执行python auto_chart.py3.查看结果同目录下生成销售周报_自动折线图.xlsx打开就能看到折线图。4.替换真实数据- 方法一把create_sample_data()改成读取你自己的 Excel 文件wb openpyxl.load_workbook(你的周报.xlsx) ws wb.active # 或 ws wb[Sheet1]- 方法二手动把数据粘贴进生成的模板文件再运行脚本。常见坑排查清单| 问题 | 原因 | 解决 ||------|------|------|| 图表空白 | 数据区域引用错了 | 检查min_row和max_row是否覆盖了数据行确认标题行在第1行 || 日期显示为数字 | 日期列是文本格式 | 用datetime对象存储日期或用str格式化 || 图表太大/太小 | width/height 参数不合适 | 调整chart.width和chart.height单位英寸 || 颜色没变化 | 颜色代码写错 | 使用标准颜色名如 FF0000 红色或 RGB 十六进制 || 找不到openpyxl| 没安装或虚拟环境错 | 运行pip list检查确认在正确的 Python 环境里 |调试小技巧在insert_line_chart函数开头加print(data, cats)打印引用范围看是否与预期一致。可改参数-图表位置ws.add_chart(chart, E5)改成其他单元格如A10-数据范围修改data_start_row和data_end_row例如周报有30天数据就改成data_end_row31-图表类型把LineChart()换成BarChart()或PieChart()即可生成柱状图/饼图-多系列添加第二个数据列如C列“利润”在data引用时包含更多列data Reference(ws, min_col2, max_col3, min_row1, max_rowdata_end_row)-标题字体修改chart.title后加字体设置chart.title 本周销售额趋势 chart.title.font Font(name微软雅黑, size14, boldTrue, color333333)进阶推荐如果数据量很大1000行建议先用 pandas 清洗数据再写入 openpyxl配合pandas.DataFrame.to_excel()一步到位。想知道怎么把 pandas 和 openpyxl 结合做自动化周报评论区告诉我你的具体场景下期安排

相关新闻