导入模块
import openpyxl
读取Excel文档
打开文件
# from openpyxl import Workbook
# 实例化
wb = openpyxl.Workbook()
# 激活 worksheet
sheet = wb.active
# 删除某个工作表
#wb.remove(sheet)
# 默认的打开方式为可读可写
# 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')