如何使用Python操作Excel?openpyxl库高级技巧指南

来源:微信开发网作者:又改需求头衔:程序员
导读:本期聚焦于小伙伴创作的《如何使用Python操作Excel?openpyxl库高级技巧指南》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何使用Python操作Excel?openpyxl库高级技巧指南》有用,将其分享出去将是对创作者最好的鼓励。

Python的openpyxl库是处理Excel文件的常用工具,支持xlsx格式文件的读写、样式修改、公式计算等多种操作,能够满足日常数据处理的大部分需求。下面将从基础操作到高级技巧逐步展开介绍。

如何使用Python操作Excel?openpyxl库高级技巧指南

openpyxl基础环境准备

首先需要安装openpyxl库,使用pip命令即可完成安装:

# 安装openpyxl库
pip install openpyxl

安装完成后,就可以在Python脚本中导入库并开始操作Excel文件了。

基础读写操作

创建新的Excel文件

使用openpyxl创建新的Excel文件非常简单,只需要实例化Workbook对象即可:

from openpyxl import Workbook

# 创建Workbook对象,默认会生成一个名为Sheet的工作表
wb = Workbook()
# 获取活动的工作表
ws = wb.active
# 给工作表重命名
ws.title = "数据表"
# 写入数据到A1单元格
ws["A1"] = "姓名"
ws["B1"] = "年龄"
ws["A2"] = "张三"
ws["B2"] = 25
# 保存文件
wb.save("测试数据.xlsx")

读取已有Excel文件

如果需要读取已经存在的Excel文件,可以使用load_workbook方法:

from openpyxl import load_workbook

# 加载已有的Excel文件
wb = load_workbook("测试数据.xlsx")
# 获取指定名称的工作表
ws = wb["数据表"]
# 读取A1单元格的内容
print(ws["A1"].value)  # 输出:姓名
# 遍历第一行的所有单元格
for cell in ws[1]:
    print(cell.value)

openpyxl高级操作技巧

单元格样式设置

openpyxl支持设置单元格的字体、颜色、对齐方式、边框等多种样式,以下是设置单元格样式的示例:

from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side

wb = Workbook()
ws = wb.active
ws.title = "样式示例"

# 设置字体:加粗、红色、14号字
font = Font(bold=True, color="FF0000", size=14)
# 设置背景填充:黄色
fill = PatternFill(fill_type="solid", fgColor="FFFF00")
# 设置对齐方式:水平居中、垂直居中
alignment = Alignment(horizontal="center", vertical="center")
# 设置边框:细黑色边框
side = Side(style="thin", color="000000")
border = Border(left=side, right=side, top=side, bottom=side)

# 将样式应用到A1单元格
ws["A1"] = "样式测试"
ws["A1"].font = font
ws["A1"].fill = fill
ws["A1"].alignment = alignment
ws["A1"].border = border

# 调整列宽和行高
ws.column_dimensions["A"].width = 20
ws.row_dimensions[1].height = 30

wb.save("样式示例.xlsx")

公式与函数使用

openpyxl支持在单元格中写入Excel公式,保存后打开文件会自动计算结果:

from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws.title = "公式计算"

# 写入基础数据
ws["A1"] = 10
ws["A2"] = 20
ws["A3"] = 30
# 写入求和公式
ws["A4"] = "=SUM(A1:A3)"
# 写入平均值公式
ws["B1"] = "=AVERAGE(A1:A3)"

wb.save("公式计算示例.xlsx")

生成图表

openpyxl可以基于工作表中的数据生成柱状图、折线图等多种图表,以下是生成柱状图的示例:

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

wb = Workbook()
ws = wb.active
ws.title = "图表示例"

# 写入数据
ws["A1"] = "月份"
ws["B1"] = "销售额"
data = [
    ("一月", 1000),
    ("二月", 1500),
    ("三月", 1200),
    ("四月", 1800),
    ("五月", 2000)
]
for i, (month, sales) in enumerate(data, start=2):
    ws[f"A{i}"] = month
    ws[f"B{i}"] = sales

# 创建柱状图
chart = BarChart()
chart.title = "月度销售额"
chart.x_axis.title = "月份"
chart.y_axis.title = "销售额"
# 设置图表数据范围
data_ref = Reference(ws, min_col=2, min_row=1, max_row=6)
cats_ref = Reference(ws, min_col=1, min_row=2, max_row=6)
chart.add_data(data_ref, titles_from_data=True)
chart.set_categories(cats_ref)
# 将图表添加到工作表的E1位置
ws.add_chart(chart, "E1")

wb.save("图表示例.xlsx")

多工作表操作

当需要操作多个工作表时,可以通过以下方式实现创建、切换、复制工作表等操作:

from openpyxl import Workbook

wb = Workbook()
# 删除默认的工作表
del wb["Sheet"]

# 创建三个新的工作表
ws1 = wb.create_sheet("第一季度")
ws2 = wb.create_sheet("第二季度")
ws3 = wb.create_sheet("第三季度")

# 给每个工作表写入表头
for ws in [ws1, ws2, ws3]:
    ws["A1"] = "产品"
    ws["B1"] = "销量"

# 复制工作表
ws_copy = wb.copy_worksheet(ws1)
ws_copy.title = "第一季度副本"

# 获取所有工作表名称
print(wb.sheetnames)  # 输出:['第一季度', '第二季度', '第三季度', '第一季度副本']

wb.save("多工作表示例.xlsx")

批量处理数据

当需要处理大量数据时,可以通过循环遍历的方式批量操作单元格,提升处理效率:

from openpyxl import load_workbook

# 加载文件
wb = load_workbook("多工作表示例.xlsx")
ws = wb["第一季度"]

# 批量写入10条数据
for i in range(2, 12):
    ws[f"A{i}"] = f"产品{i-1}"
    ws[f"B{i}"] = i * 100

# 批量读取数据
for row in ws.iter_rows(min_row=2, max_row=11, min_col=1, max_col=2):
    product = row[0].value
    sales = row[1].value
    print(f"{product}的销量是{sales}")

wb.save("多工作表示例.xlsx")

注意事项

  • openpyxl不支持xls格式的Excel文件,如果需要处理xls格式,可以使用xlrd库读取,xlwt库写入。
  • 写入公式后,只有通过Excel软件打开文件时公式才会计算,openpyxl本身不会计算公式结果。
  • 操作大文件时,建议使用read_only模式读取,write_only模式写入,减少内存占用。
  • 修改已有文件时,保存的路径如果和原文件路径一致,会直接覆盖原文件,建议先备份原文件。

PythonopenpyxlExcel操作数据处理修改时间:2026-07-17 05:15:34

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。