Python3使用openpyxl库进行Excel文件读写与样式设置

山间有风
山间有风
发布时间:2026-10-11 | 4人浏览过
原创

本文介绍如何使用Python3的openpyxl库处理Excel2007及以上版本的xlsx文件。内容涵盖创建工作簿、管理Sheet工作表、读取与写入单元格数据,以及调整字体、对齐和行列尺寸等表格样式。通过具体代码示例,展示如何高效完成Excel文件的自动化处理与保存。

openpyxl 核心概念与适用范围

openpyxl 是 Python 中专门用于处理 Excel 2007 及以上版本(即 .xlsx 格式)文件的库。对于旧版的 .xls 文件,通常需要结合使用 xlrd 和 xlwt 库。在使用 openpyxl 时,需理解以下核心对象:

  • Workbook(工作簿):代表整个 Excel 文件。创建新文件时,默认会生成至少一个工作表。
  • Worksheet(工作表):工作簿内的具体表格,如 Sheet1、Sheet2 等。
  • Cell(单元格):存储具体数据的基本单位,可通过行列坐标或字母数字组合访问。

此外,openpyxl 支持新建文件、管理多个 Sheet、读取/写入数据以及调整表格样式(如字体、颜色、边框等)。需要注意的是,若读取包含 gb2312 编码的文件出现乱码,需先将其转换为 Unicode 编码。

创建工作簿与基础操作

要开始操作 Excel,首先需要导入库并创建或加载工作簿。以下代码演示如何创建一个名为 test.xlsx 的新文件:

import openpyxl

# 创建一个新的工作簿,默认包含一个名为 'Sheet' 的工作表
wb = openpyxl.Workbook()
# 保存文件
wb.save('test.xlsx')

管理工作表(Sheet)

加载已有文件后,可以对工作表进行增删改查操作。例如,获取所有工作表名称、创建新表、删除指定表或激活特定表:

import openpyxl

# 打开已有的 Excel 文件
wb = openpyxl.load_workbook("test.xlsx")

# 1. 新建工作表,指定索引位置(index=2)和标题(title="sheet3")
wb.create_sheet(index=2, title="sheet3")

# 2. 获取所有工作表的名称列表
sheet_names = wb.sheetnames  # 结果示例:['Sheet1', 'Sheet2', 'Sheet3']

# 3. 根据名称删除工作表(例如删除第3个工作表)
wb.remove(wb[sheet_names[2]])

# 4. 通过名称获取并打开特定工作表
sheet1 = wb[sheet_names[0]]  # 获取第一个 Sheet 工作表对象

读取单元格数据

获取工作表对象后,可以读取单元格的值、行列信息,或遍历特定行/列的数据。以下示例展示了如何获取最大行列数、读取特定单元格值,以及遍历整行或整列:

# 获取最大列数和行数
sheet1_max_column = sheet1.max_column  # 结果:3
sheet1_max_row = sheet1.max_row        # 结果:10

# 读取特定单元格 A1 的值、列标和行号
A1_value = sheet1['A1'].value   # 结果:'a1'
A1_column = sheet1['A1'].column # 结果:'A'
A1_row = sheet1['A1'].row       # 结果:1

# 使用 cell 方法读取第一行第一列的值
A1 = sheet1.cell(row=1, column=1).value  # 结果:'a1'

# 获取 C 列的所有数据
list_sheet1_column_C = []
for i in sheet1["C"]:
    list_sheet1_column_C.append(i.value)

# 获取第 1 行的所有数据
list_sheet1_row_1 = []
for i in sheet1[1]:
    list_sheet1_row_1.append(i.value)

# 遍历所有数据,按行循环获取并保存到列表
list_sheet1_all = []
for row in sheet1.rows:
    for cell in row:
        list_sheet1_all.append(cell.value)

写入与修改数据

向 Excel 写入数据可以通过直接赋值或使用 cell 方法实现。同时,可以修改工作表的标题:

# 修改第一行第二列的单元格值为 'B1'
sheet1.cell(row=1, column=2, value="B1")

# 直接通过坐标字符串修改 A1 单元格的值
sheet1["A1"] = "A1"

# 新增 B11 单元格的值(若不存在则创建)
sheet1["B11"] = "B11"

# 修改工作表的标题
sheet1.title = "test_sheet"

调整表格样式

openpyxl 支持丰富的样式设置,包括字体、颜色、对齐方式、行列尺寸等。以下示例展示了如何设置单元格字体、对齐方式以及调整行高和列宽:

# 设置 A1 单元格(实际代码中为 B11)的字体:宋体、24号、加粗、斜体、浅蓝色
sheet1["B11"].font = openpyxl.styles.Font(name="宋体", size=24, italic=True, color="00CCFF", bold=True)

# 设置 B11 单元格水平垂直居中
sheet1["B11"].alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center")

# 设置第一行的高度为 30
sheet1.row_dimensions[1].height = 30

# 设置 C 列的宽度为 35
sheet1.column_dimensions["C"].width = 35

保存文件与注意事项

完成所有操作后,务必调用 save 方法保存文件。注意,如果在文件打开状态下进行某些操作后未正确保存,可能会导致文件损坏或数据丢失。因此,建议在完成所有读写和样式调整后,统一执行保存操作:

# 保存文件
wb.save("test.xlsx")

对于需要处理旧版 .xls 文件的场景,可结合 xlrd 和 xlwt 库。此外,若涉及大量数据读写或复杂逻辑,建议参考更完整的示例代码,如遍历特定列并匹配条件写入数据的场景,以优化处理效率。

以上就是 Python3 结合 openpyxl 库实现 Excel 操作的详细内容,更多关于 Python Excel 自动化处理的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表