零基础教你使用Python一键生成Excel图表

 更新时间:2026年04月07日 08:11:50   作者:小庄-Python办公  
在日常办公和数据分析中,Excel图表是我们展示数据最直观的工具,本文专为零基础编程新手设计,将系统地带你了解如何使用Python在Excel中制作柱状图,告别繁琐的手工操作

引言

在日常办公和数据分析中,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套图表配色方案。你可以尝试修改为 148 之间的任意数字,探索不同的视觉效果。

进阶资源与结语

恭喜你!你已经成功掌握了使用Python制作原生Excel图表的基础技能。这不仅能帮你省下大量复制粘贴的时间,还为你打开了自动化办公的大门。

当你熟悉了 openpyxl 之后,如果你希望处理百万级的数据或者进行更复杂的数据分析,建议你了解以下进阶资源:

  • openpyxl 官方文档:学习如何制作折线图 (LineChart)、饼图 (PieChart) 以及散点图 (ScatterChart)。
  • Pandas 库:Python数据分析领域的王者,配合 XlsxWriter 引擎,可以实现极速的数据清洗并一键输出带图表的报表。

行动起来吧! 复制上面的完整代码,在你的电脑上运行一次,亲眼见证Python为你自动绘制出第一张Excel图表。这就是你迈向“办公自动化达人”的第一步!

到此这篇关于零基础教你使用Python一键生成Excel图表的文章就介绍到这了,更多相关Python生成Excel图表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python脚本实现一键执行MySQL与达梦数据库的SQL

    Python脚本实现一键执行MySQL与达梦数据库的SQL

    这篇文章主要为大家详细介绍了如何使用Python 脚本 + PyInstaller 打包成可执行文件,一键搞定 MySQL 和达梦(DM)数据库的 SQL 执行,希望对大家有所帮助
    2025-08-08
  • python通过自定义isnumber函数判断字符串是否为数字的方法

    python通过自定义isnumber函数判断字符串是否为数字的方法

    这篇文章主要介绍了python通过自定义isnumber函数判断字符串是否为数字的方法,涉及Python操作字符串判断的相关技巧,需要的朋友可以参考下
    2015-04-04
  • 解决TypeError: Object of type xxx is not JSON serializable错误问题

    解决TypeError: Object of type xxx is&

    这篇文章主要介绍了解决TypeError: Object of type xxx is not JSON serializable错误问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • python使用tkinter模块实现文件选择功能

    python使用tkinter模块实现文件选择功能

    这篇文章主要介绍了python使用tkinter模块实现文件选择功能,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • 使用Python实现批量ping操作方法

    使用Python实现批量ping操作方法

    这篇文章主要介绍了使用Python实现批量ping操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • win10下opencv-python特定版本手动安装与pip自动安装教程

    win10下opencv-python特定版本手动安装与pip自动安装教程

    这篇文章主要介绍了win10下opencv-python特定版本手动安装与pip自动安装教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • 浅谈numpy 函数里面的axis参数的含义

    浅谈numpy 函数里面的axis参数的含义

    这篇文章主要介绍了numpy 函数里面的axis参数的含义,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • python中networkx函数的具体使用

    python中networkx函数的具体使用

    本文主要介绍了python中networkx函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • python爬虫urllib中的异常模块处理

    python爬虫urllib中的异常模块处理

    这篇文章主要为大家介绍了python爬虫在爬取网页时urllib中的异常模块处理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)

    详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)

    这篇文章主要介绍了详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04

最新评论