python 操作 excel 文件 (xlsx 后缀文件使用 openpyxl)

123 阅读1分钟

读取 Excel 文件

from openyxl import load_workbook

# 默认读写, 可使用参数 read_only 指定
path = "test.xlsx"
wb = load_workbook(path)

获取工作表

# 获取所有 sheet 名称
sheet_name_list = wb.get_sheet_names()

# 根据sheet name 获取 sheet
sheet01 = wb.get_sheet_by_name("Sheet1")

# 获取 sheet name
sheet_name = sheet01.title

# 获取当前正在显示的 sheet, 也可用 wb.get_active_sheet()
sheet = wb.active

获取单元格

# 获取某个单元格的值
a = sheet["A1"]

# 分别返回, 返回的数字是 int
print(f'({a.column}, {a.row}) is {a.value}')

# 除了下标, 可以使用 cell 函数, 换成下标, 这个表示 B1
b = sheet.cell(row=1, column=2)

获取最大行和最大列

获取行和列

sheet.rows 为生成器, 里面是每一行的数据, 每一行又由一个 tuple 包裹 sheet.columns 类似, 不过里面每个 tuple 是每一列的单元格

# 按行, 返回 A1, B1, C1 这样的顺序
for row in sheet.rows:
    for cell in row:
        print(cell.value)

# 按列, 返回 A1, A2, A3 这样的顺序
for column in sheet.columns:
    for cell in column:
        print(cell.value)

以上代码可以获得所有单元格数据. 因为 sheet.rows 是生成器类型, 不能使用索引, 需要转换成 list

# 获取第一行的 tuple 对象
for cell in list(sheet.rows)[0]:
    print(cell.value)