当前位置:首页 > Python > 正文

Python openpyxl插入折线图教程 | Excel自动化图表指南

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属性提高性能

本教程展示了使用Python openpyxl库创建Excel折线图的完整流程,适用于自动化报告、数据分析可视化等场景。

发表评论