云计算百科
云计算领域专业知识百科平台

干货:openpyxl 对象模型

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" 这种字母坐标好用,因为列数用了变量。

记住两条

  • 对象模型:Workbook → Worksheet → Cell,一切的容器。
  • 坐标寻址:cell(row, column, value) 比 "A1" 更抗列数变化。
  • openpyxl 等好懂,把三层对象和坐标建立起来,读写都顺。


    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 干货:openpyxl 对象模型
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!