Python自动化办公-自动化操作Excell-openpyxl
python自动化办公(第6~7课)模块介绍,读取excel表格内容
Excel中的术语
- column:列
- row:行
- sheet:表
- 打开Excel表格并获取工作表名称
from openpyxl import load_workbook
workbook = load_workbook(filename="阿里云天池电商婴儿用户数据.xlsx")
print(workbook.sheetnames)
- 1
- 2
- 3
['sheet表1']
- 1
- 通过sheet名获取表格并获取表格的尺寸大小
- sheet=workbook[工作表名称]
- sheet.dimensions
from openpyxl import load_workbook
workbook = load_workbook(filename="阿里云天池电商婴儿用户数据.xlsx")
sheet = workbook["sheet表1"]
print(sheet.dimensions)
print(type(sheet.dimensions))
- 1
- 2
- 3
- 4
- 5
A1:G1002
<class 'str'>
- 1
- 2
- 获取表格内某个格子的数据
- workbook.active 打开活跃的/唯一的表格
- sheet[“A1”] 获取A1格子
- cell.value 该格子的数据
from openpyxl import load_workbook
workbook = load_workbook(filename="阿里云天池电商婴儿用户数据.xlsx")
sheet = workbook.active
cell1 = sheet["A1"]
cell2 = sheet["B5"]
print(cell1.value,cell2.value)
- 1
- 2
- 3
- 4
- 5
- 6
user_id 12515996043
- 1
- 获取某个格子的行数,列数,坐标
- .row 行数
- .column 列数
.coordinate 坐标
cell = sheet["B5"]
print(cell.row,cell.column,cell.coordinate)
- 1
- 2
5 2 B5
- 1
- 可用行数和列数定位某一个格子
- sheet.cell(row=行数,column=列数)
cell = sheet.cell(row=1,column=1)
print(cell.value)
#即A1格子
- 1
- 2
- 3
user_id
- 1
- 获取一系列格子
- sheet[“A1:A5”]
- sheet[“A”] ——只要A列
- sheet[“A:C”] ——A到C列
- sheet[5] ——5行
- 输出的全是元组,可用foe循环将每一个格子取出来
cells = sheet["A1:A5"]
print(cells)
- 1
- 2
((<Cell 'sheet表1'.A1>,), (<Cell 'sheet表1'.A2>,), (<Cell 'sheet表1'.A3>,), (<Cell 'sheet表1'.A4>,), (<Cell 'sheet表1'.A5>,))
- 1
from openpyxl import load_workbook
workbook = load_workbook(filename="阿里云天池电商婴儿用户数据.xlsx")
sheet = workbook.active
for row in sheet.iter_rows(min_row=2,max_row=3,min_col=1,max_col=2):
print(row)
- 1
- 2
- 3
- 4
- 5
(<Cell 'sheet表1'.A2>, <Cell 'sheet表1'.B2>)
(<Cell 'sheet表1'.A3>, <Cell 'sheet表1'.B3>)
- 1
- 2
- 返回的是每一行为一个元组
for col in sheet.iter_cols(min_row=2,max_row=3,min_col=1,max_col=2):
print(col)
- 1
- 2
(<Cell 'sheet表1'.A2>, <Cell 'sheet表1'.A3>)
(<Cell 'sheet表1'.B2>, <Cell 'sheet表1'.B3>)
- 1
- 2
- 返回的是每一列为一个元组
from openpyxl import load_workbook
workbook = load_workbook(filename="阿里云天池电商婴儿用户数据.xlsx")
sheet = workbook.active
for row in sheet.iter_rows(min_row=2,max_row=3,min_col=1,max_col=2):
for cell in row:
print(cell)
- 1
- 2
- 3
- 4
- 5
- 6
<Cell 'sheet表1'.A2>
<Cell 'sheet表1'.B2>
<Cell 'sheet表1'.A3>
<Cell 'sheet表1'.B3>
- 1
- 2
- 3
- 4
作业:编写python程序,要求如下:
- 打开文件阿里云天池电商婴儿用户数据.xlsx
- 找到其中空着的格子
- 输出这些格子的坐标,如A1,C10等
- 空格子有:[共21个]
- E153,A278,E278,E293,C320,G339,B342
- E503,B527,E544,F554,C590,G597,A610
- F611,E666,E791,E816,E916,B958,G976
from openpyxl import load_workbook
workbook = load_workbook(filename="阿里云天池电商婴儿用户数据.xlsx")
sheet = workbook.active
# 返回工作表大小
sheet_size = sheet.dimensions
cells = sheet[sheet_size]
# 建一个空列表,方便后面打印查看
cell_list = []
for cell_tuple in cells:
# cell_tuple是每一行为1个元组
for cell in cell_tuple:
# cell是每一行元组中的每一个小格子
if cell.value == None:
cell_list.append(cell.coordinate)
for i in range(len(cell_list)):
# 没有end时默认换行输出,end为结束符
print(cell_list[i],end=",")
if (i+1)%7 == 0: # i是从0开始的,所以要加1再对7取余
print("")
print("")
print(f"总共{n}个")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
E153,A278,E278,E293,C320,G339,B342,
E503,B527,E544,F554,C590,G597,A610,
F611,E666,E791,E816,E916,B958,G976,
总共21个
人生苦短,慢慢潇洒。
nsyw.run