Python3使用openpyxl库进行Excel文件读写与样式设置
本文介绍如何使用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 自动化处理的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













