openpyxl 对象模型:workbook / worksheet / cell
先建立三层
openpyxl 处理 xlsx,其实和它名字一样三层:
Workbook # 整本工作簿(一个 .xlsx 文件)
└── Worksheet # 一个 sheet 表
└── Cell # 一个单元格 = 坐标(x, y) + 值 + 样式
几乎所有操作都是"打开工作簿 → 选中工作表 → 定位单元格/行列 → 读写"。
打开方式,两条路
from openpyxl import load_workbook
# 读模式:只看值,快,适合取数
wb = load_workbook(path, data_only=True)
# 读写模式:可写,能保存
wb = load_workbook(path)
区别在后面几篇会细讲(data_only 是重灾区)。
基本读写
ws = wb.active # 默认第一个sheet
# 或按名字取
ws = wb["Sheet1"]
# 读
val = ws["A1"].value
# 写
ws["A1"] = 123
ws["B2"] = "january"
# 遍历
for row in ws.iter_rows(min_row=1, max_row=5, max_col=3):
for cell in row:
print(cell.coordinate, cell.value)
我们项目里"按动态坐标写"的场景
写标准输出时,表头两行固定,数据从第 3 行开始,逐格填:
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
# 第一行英文表头,第二行中文表头
for col, head in enumerate(headers_en, start=1):
ws.cell(row=1, column=col, value=head)
wb.save(out_path)
ws.cell(row, column, value) 是"坐标寻址"最稳的写法,比 "A1" 这种字母坐标好用,因为列数用了变量。
记住两条
openpyxl 等好懂,把三层对象和坐标建立起来,读写都顺。
网硕互联帮助中心

评论前必须登录!
注册