Python 读取 Excel 详解(openyxl)

文章目录

  • 1 概述
  • 2 常用对象
    • 2.1 工作簿 workbook
    • 2.2 工作表 sheet
    • 2.3 单元格 cell
  • 3 示例
    • 3.1 遍历 Excel

1 概述

import openyxl
非内置模块,需安装:pip install openpyxl
适用对象:Excel 2007 及以上 (*.xlsx)

2 常用对象

2.1 工作簿 workbook

import openpyxl

# 新建 工作簿
wb = openpyxl.Workbook()

# 设置 工作簿的名称及格式(相对路径 or 绝对路径)
file_name = '2.xlsx'

# 保存。若存在,则覆盖; 若已存在,可注释该操作
wb.save(file_name)

# 加载
lwb = openpyxl.load_workbook(file_name)

# 获取 参数
print(lwb.active)      # 当前活动的 sheet 页
print(lwb.read_only)   # 是否以只读方式打开
print(lwb.encoding)    # 编码
print(lwb.properties)  # 属性信息,如:标题、作者、创建日期 等
print('-------- 分割线 1 --------')

# 获取、创建、复制 工作列表
print(lwb.worksheets)  # 工作列表,以 Worksheet 格式返回
print(lwb.sheetnames)  # 工作列表,以 String    格式返回

print(lwb['Sheet'])                       # 获取工作表
print(lwb.create_sheet('Sheet1'))         # 创建工作表
print(lwb.copy_worksheet(lwb['Sheet1']))  # 复制工作表

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

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)

你可能感兴趣的:(Python,python,openyxl,excel)