上一篇
Python openpyxl插入折线图教程 | Excel自动化图表指南
- Python
- 2025-08-15
- 1629
Openpyxl插入折线图教程
使用Python自动化Excel图表创建
为什么使用openpyxl创建Excel图表?
在数据分析和报告自动化领域,openpyxl是一个强大的Python库,它允许我们:
- 自动化Excel操作,节省大量手动操作时间
- 将数据分析和图表生成整合到Python工作流中
- 创建专业、可定制的Excel图表
- 批量处理多个Excel文件和图表
- 与Python数据科学生态系统(如Pandas、NumPy)无缝集成
准备工作
1
安装openpyxl
使用pip安装最新版openpyxl:
pip install openpyxl
2
导入必要模块
在Python脚本中导入所需组件:
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference
创建折线图的5个关键步骤
1
创建工作簿和工作表
创建新的Excel工作簿并激活工作表
wb = Workbook()
ws = wb.active
2
准备图表数据
在工作表中填入示例数据
data = [
['月份', '销售额', '利润'],
['1月', 15000, 3000],
# ... 更多数据行 ...
]
for row in data:
ws.append(row)
3
创建折线图对象
初始化折线图并设置基本属性
chart = LineChart()
chart.title = "销售业绩分析"
chart.style = 13 # 预定义图表样式
chart.y_axis.title = "金额"
chart.x_axis.title = "月份"
4
设置数据范围
使用Reference定义图表使用的数据范围
# 数据范围 (从B2到C7)
data_ref = Reference(ws, min_col=2, max_col=3,
min_row=1, max_row=7)
# 类别范围 (A2到A7)
cats_ref = Reference(ws, min_col=1, min_row=2, max_row=7)
5
添加图表到工作表
将配置好的图表添加到工作表中
chart.add_data(data_ref, titles_from_data=True)
chart.set_categories(cats_ref)
ws.add_chart(chart, "E2") # 图表放置位置
完整示例代码
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference
# 创建新工作簿
wb = Workbook()
ws = wb.active
# 添加销售数据
sales_data = [
['月份', '销售额', '利润'],
['1月', 15000, 3000],
['2月', 18000, 4500],
['3月', 22000, 5500],
['4月', 19500, 4900],
['5月', 24000, 6000],
['6月', 21000, 5200]
]
for row in sales_data:
ws.append(row)
# 创建折线图
chart = LineChart()
chart.title = "2023上半年销售业绩"
chart.style = 13
chart.height = 15 # 图表高度(厘米)
chart.width = 25 # 图表宽度(厘米)
chart.y_axis.title = "金额 (元)"
chart.x_axis.title = "月份"
# 设置数据范围
data_ref = Reference(ws, min_col=2, max_col=3, min_row=1, max_row=7)
cats_ref = Reference(ws, min_col=1, min_row=2, max_row=7)
# 添加数据到图表
chart.add_data(data_ref, titles_from_data=True)
chart.set_categories(cats_ref)
# 将图表添加到工作表 (从E2单元格开始)
ws.add_chart(chart, "E2")
# 保存工作簿
wb.save("sales_report.xlsx")
生成的Excel图表效果
运行上述代码后,Excel文件中将包含以下折线图:
2023上半年销售业绩
1月
2月
3月
4月
5月
6月
销售额
利润
高级技巧与最佳实践
自定义图表样式
# 设置单个数据系列样式
line = chart.series[0] # 第一个数据系列
line.graphicalProperties.line.solidFill = "FF0000" # 红色
line.graphicalProperties.line.width = 30000 # 线宽 (单位: EMU)
# 设置标记样式
line.marker.symbol = "circle" # 圆形标记
line.marker.size = 8 # 标记大小
组合图表(折线图+柱状图)
from openpyxl.chart import BarChart
# 创建组合图表
combo_chart = BarChart()
combo_chart.y_axis.axId = 200 # 使用不同坐标轴
# 添加柱状图数据
bar_data = Reference(ws, min_col=4, min_row=1, max_row=7)
combo_chart.add_data(bar_data, titles_from_data=True)
# 将柱状图添加到折线图
chart += combo_chart
专业提示: 使用
openpyxl.drawing
模块可以精确控制图表位置和大小,避免Excel自动调整布局导致的问题。
常见问题解答
1. 图表没有显示数据?
确保:
- 数据范围(Reference)正确包含标题行和数据行
- 工作表名称正确
- 数据不包含空值或非数字值
2. 如何添加图例和网格线?
chart.legend.position = "b" # 图例位置:底部
chart.y_axis.majorGridlines = None # 隐藏Y轴网格线
chart.x_axis.majorGridlines = True # 显示X轴网格线
3. 如何处理大量数据?
对于大型数据集:
- 使用Pandas DataFrame处理数据
- 批量写入工作表,避免逐行添加
- 设置
chart.cache_data
属性提高性能
本文由FengLeiTiao于2025-08-15发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://heyang.jltcw.com/20258227.html
发表评论