openpyxl读写excel

导入模块

import openpyxl

读取Excel文档


打开文件

  1. 没有,创建( 新建一个Excel文件,可以使用Workbook()方法,同时它会自动提供一个sheet工作表。对于删除一个工作表,则可以使用workbook对象的remove(sheet)**方法删除
# from  openpyxl import  Workbook 
# 实例化
wb = openpyxl.Workbook()
# 激活 worksheet
sheet = wb.active

# 删除某个工作表 
#wb.remove(sheet)
  1. 有,打开
# 默认的打开方式为可读可写
# from openpyxl  import load_workbook
wb = openpyxl.load_workbook('文件名称.xlsx')

获取工作表

# 获取所有工作表名(返回一个列表)
sheets = wb.get_sheet_names()

# 获取某一特定的工作表
sheet = wb.get_sheet_by_name('Sheet2')

# 获取当前工作表的表名
sheet_name = sheet.title

# 一般来说,表格大多数用到的是打开时显示的工作表,这时可以用active来获取当前工作表
sheet = wb.active

获取单元格
获取单元格有两种获取方法:sheet[列行名]和sheet.cell(row,column)

# 通过sheet[列行名]获取
a = sheet['A2']

# 通过sheet.cell(row,column)获取
b = sheet.cell(row=1, column=2)  # 即sheet['B1']

# 获取单元格内容
print(a.value)

# 获取单元格所在列和行
print(‘a is+str((a.column,a.row)))

获取行和列
openpyxl中便提供了一个行和列的生成器**(sheet.rows和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)

也可以通过list(sheet.rows)index对某一行或列进行遍历,而在此值得注意的是,由于sheet.rows(或sheet.columns)是生成器类型,是不能直接调用的,需将其转化为一个list类型,然后再通过索引遍历

# 对某一特定的行进行遍历
for cell in list(sheet.rows)[0]:
    print(cell.value)

也可以通过使用**sheet[行列值:行列值]**来对给定单元格范围进行遍历

# 对某一单元格范围进行遍历
for spaces in sheet['A1':'B2']:
    for cell in spaces:
        print(cell.value)

获取表格行和列的最大值

# 获得最大列和最大行
print(sheet.max_row)
print(sheet.max_column)

写入Excel文档


写入单元格

# 直接赋值
sheet['A1'].value = 2

# 公式赋值
sheet['A6'].value = '=SUM(A1:A5)'

# 写入一行
row = [1 ,2, 3, 4, 5]
sheet.append(row)

# 写入多行
rows = [
    ['ID', 'Name', 'Department'],
    ['001', 'Lee','CS'],
    ['002', 'John','MA'],
    ['003', 'Amy','IS']
]
for row in rows:
	sheet.append(row)

保存文件

# 保存文件至当前目录
wb.save('new_file.xlsx')

你可能感兴趣的:(python)