xlsx
xls
1 import openpyxl
2
3 if __name__ == '__main__':
4 path = 'F:/imocInterface/case/imooc.xlsx'
5 # 读取excel文件
6 workbook = openpyxl.load_workbook(path)
7 # 读取所有sheet
8 sheet = workbook.get_sheet_names()
9 # 获取某个sheet
10 sheet = workbook[sheet[0]]
11 # 获取某个cell的值
12 cell_val = sheet.cell(row=2, column=2).value
13 print(cell_val)
load_workbook()
workbook.get_sheet_by_name("sheet的名字")
cell(row, column, value=None)
1 # 方式一:获取A4单元格的值
2 cell_val = sheet['A4'].value
3 # 方式二:获取第二行,第二列的单元格的值
4 cell_val = sheet.cell(row=2, column=2).value
1 # A1-B3的单元格 共6个
2 cell_range = sheet['A1':'B3']
3
4 # A1-A3的单元格 共3个
5 cell_range = sheet['A1:A3']
6
7 # 第十行的单元格
8 cell_range = sheet[10]
9
10 # 第1、2行的单元格
11 cell_range = sheet[1:2]
注意:以上方法返回的是都是cell对象组成tuple
1 # 返回行
2 for col in sheet.iter_rows(min_row=1, min_col=1, max_col=3, max_row=2):
3 for cell in col:
4 print(cell)
5
6 # 返回列
7 for col in sheet.iter_cols(min_row=1, min_col=1, max_col=3, max_row=2):
8 for cell in col:
9 print(cell)
# 返回行
<Cell 'Sheet1'.A1>
<Cell 'Sheet1'.B1>
<Cell 'Sheet1'.C1>
<Cell 'Sheet1'.A2>
<Cell 'Sheet1'.B2>
<Cell 'Sheet1'.C2>
# 返回列
<Cell 'Sheet1'.A1>
<Cell 'Sheet1'.A2>
<Cell 'Sheet1'.B1>
<Cell 'Sheet1'.B2>
<Cell 'Sheet1'.C1>
<Cell 'Sheet1'.C2>
官方提醒:出于性能考虑, sheet.iter_cols() 方法不支持在只读模式使用
1 # 以列的形式,获取sheet的全部cell
2 data = tuple(sheet.columns)
3
4 # 以行的形式,获取sheet的全部cell
5 data = tuple(sheet.rows)
6
7 # 获取所有数据
8 data = tuple(sheet.values)
9 # 指定返回某一行数据
10 print(data[2])
注意: sheet.rows 返回的是一个对象,需要用 tuple() 才能将对象转换成tuple
官方提醒:出于性能考虑, sheet.cloumns 方法不支持在只读模式使用
1 # 获取sheet最大行
2 data = sheet.max_row
3
4 # 获取sheet最多列
5 data = sheet.max_column
6
7 # 获取sheet最小行
8 data = sheet.min_row
9
10 # 获取sheet最小列
11 data = sheet.min_column
1 workbook = openpyxl.load_workbook(path)
2 sheet = workbook.active
3 sheet.cell(row=2, col=2, value="213")
4 workbook.save(filename=path)
PermissionError: [Errno 13] Permission denied: 'XXXXX.xlsx'
workbook.active
sheet["B2"] = "213"
save()