当前位置: 代码网 > it编程>前端脚本>Python > Python实现自动化操作Excel的方法详解

Python实现自动化操作Excel的方法详解

2025年11月27日 Python 我要评论
引言你是否还在为 excel 中的重复性工作而烦恼?每天花费大量时间进行数据整理、格式调整、报表生成?如果是这样,那么恭喜你,你来对地方了!python 作为一门强大且易学的编程语言,能让你彻底告别这

引言

你是否还在为 excel 中的重复性工作而烦恼?每天花费大量时间进行数据整理、格式调整、报表生成?如果是这样,那么恭喜你,你来对地方了!python 作为一门强大且易学的编程语言,能让你彻底告别这些繁琐的手动操作,实现 excel 自动化,极大地提高工作效率。

本篇文章将作为一份全面的新手指南,带你从零开始学习如何使用 python 自动化操作 excel 文件。无论你是数据分析师、办公室文员,还是任何需要处理 excel 的人,本文都将为你打开一扇通往高效工作的大门。

为什么选择 python 自动化 excel

在深入学习之前,我们先来了解一下为什么 python 是自动化 excel 的绝佳选择:

  • 效率提升:将耗时数小时甚至数天的工作自动化,只需几秒钟即可完成。
  • 减少错误:机器执行任务比手动操作更精确,大大降低人为错误率。
  • 可重复性:编写一次脚本,可反复用于处理类似任务,无需每次从头开始。
  • 数据处理能力:python 拥有强大的数据处理库(如 pandas),能与 excel 自动化无缝结合,实现更复杂的数据分析。
  • 易学易用:python 语法简洁明了,即使是编程新手也能快速上手。
  • 生态丰富:拥有多个成熟的库来操作 excel,功能全面。

前置准备

在开始编写代码之前,我们需要做一些简单的准备工作。

1. 安装 python

如果你的电脑尚未安装 python,请前往 python 官方网站下载并安装最新版本。建议选择 3.x 系列的稳定版本。

安装完成后,打开命令行工具(windows 用户搜索 cmd 或 powershell,macos/linux 用户打开终端),输入以下命令检查 python 是否安装成功:

python --version

如果显示 python 版本号,则表示安装成功。

2. 安装必要的库:openpyxl

python 有多个库可以操作 excel 文件,其中 openpyxl 是一个功能强大且广泛使用的库,专门用于读写 .xlsx 格式的 excel 文件(excel 2010 及更高版本)。对于新手来说,它是非常好的入门选择。

在命令行中输入以下命令来安装 openpyxl

pip install openpyxl

pip 是 python 的包管理工具,它会自动下载并安装 openpyxl 及其所有依赖项。

python 操作 excel 核心库:openpyxl 简介

openpyxl 库的核心概念包括:

  • workbook (工作簿):代表一个完整的 excel 文件。
  • worksheet (工作表):代表工作簿中的一个选项卡(如 sheet1, sheet2 等)。
  • cell (单元格):代表工作表中的一个最小单位,存储具体的数据。

理解这三个概念,你就能很好地掌握 openpyxl 的基本操作。

实战演练:用 python 自动化 excel

现在,我们准备好通过实际代码来学习如何操作 excel 了!

1. 创建一个新的 excel 文件

我们将从创建一个全新的 excel 工作簿开始。

from openpyxl import workbook

# 创建一个新的工作簿对象
# 默认会创建一个名为 'sheet' 的工作表
wb = workbook()

# 获取当前活动的工作表 (默认创建的第一个工作表)
ws = wb.active

# 可以给工作表设置一个标题
ws.title = "我的第一个工作表"

# 保存工作簿到文件
# 注意:如果文件已存在,此操作会覆盖原文件
wb.save("我的第一个excel文件.xlsx")

print("excel 文件 '我的第一个excel文件.xlsx' 已成功创建!")

运行这段代码后,你会在脚本所在的目录下找到一个名为 我的第一个excel文件.xlsx 的文件。

2. 写入数据到单元格

有两种主要方式向单元格写入数据:直接指定单元格坐标或使用 append() 方法。

2.1. 直接指定单元格写入数据

你可以像操作字典一样,通过 ws['a1'] 的方式来访问和写入单元格。

from openpyxl import workbook

wb = workbook()
ws = wb.active
ws.title = "销售数据"

# 写入标题行
ws['a1'] = "产品"
ws['b1'] = "销量"
ws['c1'] = "价格"

# 写入数据
ws['a2'] = "苹果"
ws['b2'] = 100
ws['c2'] = 5.5

ws['a3'] = "香蕉"
ws['b3'] = 150
ws['c3'] = 3.0

ws['a4'] = "橘子"
ws['b4'] = 80
ws['c4'] = 4.0

wb.save("销售报告.xlsx")
print("数据已写入 '销售报告.xlsx'。")

2.2. 使用append()方法写入行数据

append() 方法非常方便,它会将你传入的列表或元组作为一行数据,添加到工作表的最后一行。

from openpyxl import workbook

wb = workbook()
ws = wb.active
ws.title = "员工信息"

# 写入标题行
ws.append(["姓名", "年龄", "部门", "入职日期"])

# 写入多行数据
data = [
    ["张三", 30, "销售部", "2020-01-15"],
    ["李四", 25, "市场部", "2021-03-01"],
    ["王五", 35, "技术部", "2019-07-20"]
]

for row_data in data:
    ws.append(row_data)

wb.save("员工信息表.xlsx")
print("数据已写入 '员工信息表.xlsx'。")

3. 读取 excel 文件中的数据

读取数据是自动化任务中非常常见的一步。

from openpyxl import load_workbook

# 加载现有的工作簿
try:
    wb = load_workbook("销售报告.xlsx")
    # 获取活动工作表
    ws = wb.active

    print(f"工作表 '{ws.title}' 中的数据:")

    # 遍历所有行和列读取数据
    # ws.iter_rows() 可以迭代所有行,返回单元格元组
    # min_row, max_row, min_col, max_col 可以指定遍历范围
    for row in ws.iter_rows(min_row=1, max_row=ws.max_row, min_col=1, max_col=ws.max_column):
        row_values = [cell.value for cell in row]
        print(row_values)

    # 也可以通过指定单元格读取
    print(f"\n特定单元格数据:")
    print(f"a1: {ws['a1'].value}")
    print(f"b2: {ws['b2'].value}")

except filenotfounderror:
    print("错误:文件 '销售报告.xlsx' 不存在,请先运行写入数据的代码创建文件。")

4. 修改现有 excel 文件

修改现有文件与创建文件和写入数据类似,只是需要先加载文件。

from openpyxl import load_workbook

try:
    wb = load_workbook("销售报告.xlsx")
    ws = wb.active

    # 修改特定单元格的数据
    ws['b2'] = 120  # 将苹果的销量从100改为120
    ws['c2'] = 5.8  # 修改苹果的价格

    # 添加一行新数据
    ws.append(["梨", 90, 6.2])

    # 保存修改,可以覆盖原文件,也可以保存为新文件
    wb.save("更新后的销售报告.xlsx") # 保存为新文件
    # wb.save("销售报告.xlsx") # 覆盖原文件
    print("excel 文件 '销售报告.xlsx' 已成功更新并保存为 '更新后的销售报告.xlsx'。")

except filenotfounderror:
    print("错误:文件 '销售报告.xlsx' 不存在,请先运行写入数据的代码创建文件。")

5. 插入/删除行和列

openpyxl 提供了 insert_rows(), delete_rows(), insert_cols(), delete_cols() 等方法来操作行和列。

from openpyxl import load_workbook

try:
    wb = load_workbook("销售报告.xlsx")
    ws = wb.active

    print("原始数据行数:", ws.max_row)

    # 在第 2 行之前插入 1 行
    # 参数1: 插入起始行号,参数2: 插入行数
    ws.insert_rows(2, 1)
    ws['a2'] = "插入的新行"
    ws['b2'] = "示例数据"

    print("插入行后的数据行数:", ws.max_row)

    # 删除第 4 行 (现在是原来的第 3 行)
    ws.delete_rows(4, 1)
    print("删除行后的数据行数:", ws.max_row)

    # 在第 2 列 (b列) 之前插入 1 列
    ws.insert_cols(2, 1)
    ws['b1'] = "新列标题"
    ws['b2'] = "新列数据"

    # 删除第 3 列 (c列)
    ws.delete_cols(3, 1)

    wb.save("修改行和列的销售报告.xlsx")
    print("excel 文件 '修改行和列的销售报告.xlsx' 已成功创建。")

except filenotfounderror:
    print("错误:文件 '销售报告.xlsx' 不存在。")

6. 操作多个工作表

一个 excel 文件通常包含多个工作表。

from openpyxl import workbook

wb = workbook()

# 获取默认创建的活动工作表
ws1 = wb.active
ws1.title = "数据总览"

# 创建一个新的工作表
ws2 = wb.create_sheet("详细信息")
ws2['a1'] = "这是详细信息表"

# 创建另一个工作表,并指定位置 (索引从0开始)
ws3 = wb.create_sheet("报表", 0) # 插入到第一个位置
ws3['a1'] = "这是报表"

# 打印所有工作表名称
print("所有工作表名称:", wb.sheetnames)

# 通过名称获取工作表
sheet_detail = wb["详细信息"]
sheet_detail['a2'] = "更多数据"

wb.save("多工作表文件.xlsx")
print("excel 文件 '多工作表文件.xlsx' 已成功创建,包含多个工作表。")

7. 设置单元格样式 (基础)

openpyxl 允许你设置单元格的字体、颜色、边框、对齐方式等。这里我们展示一个简单的字体加粗示例。

from openpyxl import load_workbook
from openpyxl.styles import font, patternfill, border, side, alignment

try:
    wb = load_workbook("销售报告.xlsx")
    ws = wb.active

    # 设置 a1 单元格字体为粗体,红色
    font_style = font(name='arial', size=12, bold=true, color="ff0000") # ff0000 是红色
    ws['a1'].font = font_style

    # 设置 b1 单元格背景色为黄色
    fill_style = patternfill(start_color="ffff00", end_color="ffff00", fill_type="solid") # ffff00 是黄色
    ws['b1'].fill = fill_style

    # 设置 c1 单元格居中对齐
    alignment_style = alignment(horizontal='center', vertical='center')
    ws['c1'].alignment = alignment_style

    # 设置边框 (以 a1 为例)
    thin_border = border(left=side(style='thin'),
                         right=side(style='thin'),
                         top=side(style='thin'),
                         bottom=side(style='thin'))
    ws['a1'].border = thin_border


    wb.save("带样式销售报告.xlsx")
    print("excel 文件 '带样式销售报告.xlsx' 已创建,并设置了单元格样式。")

except filenotfounderror:
    print("错误:文件 '销售报告.xlsx' 不存在。")

常见问题与注意事项

在使用 python 自动化 excel 时,新手可能会遇到一些常见问题:

1. 文件路径问题

相对路径 vs. 绝对路径:当你只写文件名时(如 wb.save("report.xlsx")),python 会在当前脚本运行的目录下查找或创建文件。如果文件不在当前目录,或者你需要指定一个特定位置,请使用绝对路径 (c:/users/yourname/documents/report.xlsx/home/yourname/report.xlsx)。

windows 路径反斜杠:在 windows 系统中,路径通常使用反斜杠 \。但在 python 字符串中,反斜杠是转义字符。正确的做法是:

  • 使用双反斜杠:"c:\\users\\..."
  • 使用正斜杠:"c:/users/..." (推荐,跨平台兼容性更好)
  • 使用原始字符串:r"c:\users\..."

2. 数据类型转换

openpyxl 会自动处理 python 数据类型到 excel 单元格类型的转换(例如,整数、浮点数、字符串、日期)。但如果你从 excel 读取日期数据,它会返回一个 datetime 对象,你可以根据需要进行格式化。

3. 大文件性能

对于包含数万甚至数十万行数据的大型 excel 文件,直接读写可能会比较慢并占用大量内存。openpyxl 提供了 read_only 模式用于快速读取和 write_only 模式用于快速写入。对于新手,可以暂时不深入研究,但在处理大文件时请记住这些选项。

4. 保存文件时覆盖

wb.save("文件名.xlsx") 操作会覆盖同名文件,请务必小心。在修改现有文件时,最好先保存为新的文件名,确认无误后再考虑覆盖。

更多高级操作方向

本文只是介绍了 openpyxl 的基础功能,你可以进一步探索:

  • 使用 pandas 处理数据:结合 pandas 库可以更高效地进行数据清洗、分析和转换,然后将结果写入 excel。
  • 创建图表openpyxl 也可以用来在 excel 中创建各种图表(如柱状图、折线图)。
  • 操作公式:读取或写入 excel 公式。
  • 数据验证:设置单元格的数据验证规则。
  • 条件格式:根据条件自动设置单元格格式。
  • 使用 xlwings:如果你需要在 windows 上直接控制已打开的 excel 应用程序,或者需要与 excel vba 宏交互,xlwings 是一个强大的选择。

总结与展望

通过本篇文章的学习,你已经掌握了使用 python openpyxl 库自动化操作 excel 的基本技能,包括创建、读写、修改、插入/删除行和列以及设置基础样式。这些技能足以帮助你解决日常工作中大部分的重复性 excel 任务。

python 自动化 excel 的世界广阔而充满可能,它将你的数据处理能力提升到一个新的水平。不要停止探索,尝试将你学到的知识应用到实际工作中,你会发现你的工作效率将得到显著提升!

现在,是时候告别重复劳动,让 python 成为你的得力助手,让数据处理飞起来吧!

以上就是python实现自动化操作excel的方法详解的详细内容,更多关于python自动化操作excel的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com