零基础教你使用Python一键生成Excel图表
作者:小庄-Python办公
引言
在日常办公和数据分析中,Excel图表是我们展示数据最直观的工具。然而,当面对每天、每周重复性的报表制作时,手动框选数据、插入图表、调整格式不仅耗时,还容易出错。
这正是Python发挥其“自动化魔法”的绝佳场景。通过Python,我们可以编写一段简短的代码,让计算机自动读取数据、生成精美的图表并保存为Excel文件。不仅效率极高,而且生成的图表是原生的Excel图表(意味着你打开Excel后依然可以手动修改它)。
本文专为零基础编程新手设计。我们将系统地带你了解如何使用Python在Excel中制作柱状图,告别繁琐的手工操作。
准备工作
在开始写代码之前,我们需要准备好开发环境。
安装Python:请确保你的电脑上已经安装了Python(建议版本3.8及以上)。你可以从Python官网下载并安装。
安装第三方库 openpyxl:
openpyxl 是Python中操作Excel文件(.xlsx)最流行且最易学的库之一。它完美支持读取、写入以及创建图表。
打开你的终端(Windows的cmd/PowerShell,或Mac的Terminal),输入以下命令并回车:
pip install openpyxl
核心实战:分步指南
我们将通过一个具体的业务场景来学习:为一家公司的“第一季度各产品销量”制作一张柱状图。
第一步:创建Excel工作簿并写入数据
首先,我们需要用Python创建一个新的Excel文件,并在里面填入我们的基础数据。
from openpyxl import Workbook
# 1. 创建一个新的工作簿和默认工作表
wb = Workbook()
ws = wb.active
ws.title = "第一季度销量"
# 2. 准备我们的数据(表头 + 数据行)
data = [
['产品名称', '一月销量', '二月销量', '三月销量'],
['产品A', 150, 200, 250],
['产品B', 120, 180, 210],
['产品C', 300, 250, 220],
]
# 3. 将数据逐行写入工作表
for row in data:
ws.append(row)
第二步:引入图表模块
在 openpyxl 中,图表功能是由特定的模块负责的。为了画柱状图,我们需要引入 BarChart(柱状图)和 Reference(数据引用范围)。
from openpyxl.chart import BarChart, Reference
第三步:创建图表对象并配置数据源
这一步是核心。我们需要告诉图表两件事:数据在哪里(数字),以及类别标签在哪里(产品A、B、C)。
# 1. 创建柱状图对象 chart = BarChart() chart.title = "第一季度产品销量对比图" chart.y_axis.title = "销量 (件)" chart.x_axis.title = "产品名称" # 2. 定义数据范围 (Reference) # 数据包含了第2列到第4列(一月到三月),第1行到第4行 data_ref = Reference(ws, min_col=2, min_row=1, max_col=4, max_row=4) # 3. 定义类别标签范围 (X轴显示的文字) # 标签在第1列(产品名称),第2行到第4行 cats_ref = Reference(ws, min_col=1, min_row=2, max_row=4) # 4. 将数据和标签添加到图表中 # titles_from_data=True 表示将数据范围的第一行(一月销量等)作为图例名称 chart.add_data(data_ref, titles_from_data=True) chart.set_categories(cats_ref)
第四步:将图表插入到工作表并保存
图表配置好后,它还只是存在于内存中。我们需要把它放在Excel表格的具体位置,并将文件保存到电脑上。
# 将图表插入到 E6 单元格的位置
ws.add_chart(chart, "E6")
# 保存为真正的Excel文件
wb.save("sales_chart.xlsx")
print("Excel图表生成成功!")
完整代码示例
为了方便你复制和练习,这里将上面的步骤整合成一段完整的、可直接运行的代码:
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
def create_excel_chart():
# 1. 初始化工作簿与数据
wb = Workbook()
ws = wb.active
ws.title = "第一季度销量"
data = [
['产品名称', '一月销量', '二月销量', '三月销量'],
['产品A', 150, 200, 250],
['产品B', 120, 180, 210],
['产品C', 300, 250, 220],
]
for row in data:
ws.append(row)
# 2. 创建柱状图并设置标题
chart = BarChart()
chart.title = "第一季度产品销量对比图"
chart.style = 10 # 设置图表的内置样式
chart.y_axis.title = "销量 (件)"
chart.x_axis.title = "产品名称"
# 3. 框选数据和标签范围
# 数据:从第2列到第4列,第1行到第4行
data_ref = Reference(ws, min_col=2, min_row=1, max_col=4, max_row=4)
# 标签:第1列,第2行到第4行
cats_ref = Reference(ws, min_col=1, min_row=2, max_row=4)
# 4. 绑定数据到图表
chart.add_data(data_ref, titles_from_data=True)
chart.set_categories(cats_ref)
# 5. 插入图表并保存文件
ws.add_chart(chart, "E6")
wb.save("sales_chart.xlsx")
print("自动化任务完成:sales_chart.xlsx 已生成!")
if __name__ == "__main__":
create_excel_chart()
运行这段代码后,你的文件夹里会出现一个 sales_chart.xlsx 文件。打开它,你会看到漂亮且规范的柱状图!
常见避坑指南
对于刚接触Python操作Excel的新手,以下几个坑请务必避开:
- PermissionError (权限拒绝报错):这是最常见的新手错误!如果你在运行Python代码时,正在用Excel软件打开着那个目标文件(例如
sales_chart.xlsx),Python会因为无法获取写入权限而报错。解决办法:每次运行代码前,请确保关闭对应的Excel文件。 - 行列索引从 1 开始:在Python的常规列表或数组中,索引是从
0开始的。但在openpyxl中,为了和Excel的习惯保持一致,行和列的索引都是从1开始的(A列=1,第一行=1)。在设置Reference范围时千万不要写错。 - 图表样式的选择:
chart.style = 10代表使用了Excel内置的第10套图表配色方案。你可以尝试修改为1到48之间的任意数字,探索不同的视觉效果。
进阶资源与结语
恭喜你!你已经成功掌握了使用Python制作原生Excel图表的基础技能。这不仅能帮你省下大量复制粘贴的时间,还为你打开了自动化办公的大门。
当你熟悉了 openpyxl 之后,如果你希望处理百万级的数据或者进行更复杂的数据分析,建议你了解以下进阶资源:
- openpyxl 官方文档:学习如何制作折线图 (LineChart)、饼图 (PieChart) 以及散点图 (ScatterChart)。
- Pandas 库:Python数据分析领域的王者,配合
XlsxWriter引擎,可以实现极速的数据清洗并一键输出带图表的报表。
行动起来吧! 复制上面的完整代码,在你的电脑上运行一次,亲眼见证Python为你自动绘制出第一张Excel图表。这就是你迈向“办公自动化达人”的第一步!
到此这篇关于零基础教你使用Python一键生成Excel图表的文章就介绍到这了,更多相关Python生成Excel图表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
