Python自動化辦公-自動化操作Excell-openpyxl
阿新 • • 發佈:2020-08-17
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個