Python 读取 Excel 详解(openyxl)

1 概述

2 常用对象

2.1 工作簿 workbook

2.2 工作表 sheet

import openpyxl

# 设置 工作簿的名称及格式
file_name = 1.xlsx

# 加载
lwb = openpyxl.load_workbook(file_name)

# 具体操作
sheet = lwb[Sheet]

# 追加
sheet.append([姓名, 性别, 年龄])
sheet.append([张三, 女, 18])
sheet.append([李四, 男, 19])
sheet.append([王五, 女, 20])
sheet.append({
         
  A: A列, B: B列})  # 部分值

# 删除
# delete_rows(idx, amount=1) idx 行开始(含),往下删除 amount 行
# delete_cols(idx, amount=1) idx 列开始(含),往右...
sheet.delete_rows(3)
sheet.delete_cols(3)

# 获取
print(sheet.title)        # 标题
print(sheet.dimensions)   # 表格大小,如 A1:C4
print(sheet.rows)         # 行对象
print(sheet.min_row)      # 最小行
print(sheet.max_row)      # 最大行

print(sheet.columns)      # 列对象
print(sheet.min_column)   # 最小列
print(sheet.max_column)   # 最大列
print(--------- 分割线 1 ---------)

print(sheet.values)       # 值对象
print(sheet.iter_rows())  # 行数据对象
print(sheet.iter_cols())  # 列数据对象
print(sheet[A1].value)  # A1 单元格的数据
print(--------- 分割线 2 ---------)

# 遍历数据
for row in sheet.iter_rows():
    for cell in row:
        print(cell.row, cell.column, cell.value)

# 保存后生效
lwb.save(file_name)

2.3 单元格 cell

import openpyxl

# 设置 工作簿的名称及格式
file_name = 1.xlsx

# 加载
lwb = openpyxl.load_workbook(file_name)

# 具体操作
sheet = lwb[Sheet]

# 获取,单个单元格
cell1 = sheet[A1]        # A1 单元格
cell2 = sheet.cell(1, 1)   # 效果同上

print(cell1.value)
print(cell2.value)

# cell1.value = 修改

# 获取,多个单元格
cellList = sheet[A1:B2]

for item in cellList:
    for cell in item:
        print(cell.row, cell.column, cell.value)


# 保存后生效
lwb.save(file_name)

3 示例

3.1 遍历 Excel

import openpyxl


def read_excel(file_name):
    """
    遍历 sheet 中的数据
    :param file_name: 文件名
    """
    lwb = openpyxl.load_workbook(file_name)

    # sheet 列表
    sheets = lwb.worksheets
    print(sheets)

    # 遍历
    for sheet in sheets:

        print(f开始遍历:{
            
     sheet},最大行数:{
            
     sheet.max_row},最大列数:{
            
     sheet.max_column})
        for row in sheet.iter_rows():
            for cell in row:
                print(cell.row, cell.column, cell.value)
        print(f结束遍历:{
            
     sheet})


if __name__ == __main__:
    file_name = 1.xlsx
    read_excel(file_name)
经验分享 程序员 微信小程序 职场和发展