一、openpyxl模塊介紹
1、openpyxl是
讀寫Excel的python庫,是一個比較綜合的工具,能夠同時讀取和修改Excel文檔
2、openpyxl中有三個不同層次的類,每一個類都有各自的屬性和方法:
- Workbook是一個excel工作表
- Worksheet是工作表中的表單,如圖
-
- Cell就是表單中的一個格
3、操作Excel的一般場景:
- 打開或者創建一個Excel需要創建一個Workbook對象
- 獲取一個表則需要先創建一個Workbook對象,然后使用該對象的方法來得到一個Worksheet對象
4、Workbook對象
- 一個Workbook對象代表一個Excel文檔,因此在操作Excel之前,都應該先創建一個Workbook對象。
- 對於一個已經存在的Excel文檔,可以使用openpyxl模塊的load_workbook函數進行讀取,該函數包涵多個參數,但只有filename參數為必傳參數。filename 是一個文件名,也可以是一個打開的文件對象。
二、安裝openpyxl
模塊
在cmd命令行下輸入命令:pip install openpyxl
三、代碼實現(在Pycharm中編寫代碼)
1、本地新建一個Excel表test_case.xlsx
2、復制test_case.xlsx到Pycharm:
3、用python操作excel
導入load_workbook庫
from openpyxl import load_workbook
第一步:打開excel
workbook1=load_workbook('test_case.xlsx')
第二步:定位表單(test_data)
sheet=workbook1['test_data']
第三步:操作excel的test_data表單
1、定位單元格(cell),根據行列讀取測試數據
data=sheet.cell(3,2).value
print(data)
特殊說明:
定位C2單元格數據{'mobilephone':'13502288210','pwd':'123456'}
data=sheet.cell(2,3).value
查看C2單元格數據類型為,但實際為dict類型
print(type(data)) 輸出str
將str類型轉化為他原來的類型dict:eval(data)
print(type(eval(data))) 輸出dict
綜上可得:
- excel 存儲的數據,數字還是數字:int—>int、 float—>float 、其他類型—>str
- 使用eval(數據) 將str類型轉換為他原來的類型
2、定位單元格(cell),根據行列值,更改原有的數據、寫入新的測試數據,
sheet.cell(3,2).value='妮妮' #更改已經存在的測試數據
sheet.cell(6,3).value='小小' #在空的單元格寫入新的測試值
workbook1.save('test_case.xlsx') #保存修改
3、統計行和列(參考上圖)
max_row=sheet.max_row
max_cow = sheet.max_column
print('最大的行值:',max_row) #輸出6
print('最大的列值:',max_cow) #輸出7
從excel中讀取測試用例:
#讀取每一條測試用用例分別保存到字典中,然后再將所有用例保存到列表中,如[{用例1},{用例2},{用例3}]
def read_case():
workbook1=load_workbook('test_case.xlsx')
sheet=workbook1['test_data']
max_row=sheet.max_row
test_case=[]
for row in range(2,max_row+1):
sub_data={}
sub_data['case_id']=sheet.cell(row,1).value
sub_data['title']=sheet.cell(row,2).value
sub_data['data']=sheet.cell(row,3).value
sub_data['method']=sheet.cell(row,4).value
sub_data['expected']=sheet.cell(row,5).value
test_case.append(sub_data)
print("讀取到的所有測試用例:",test_case)
read_case()
1 #讀取每一條測試用用例分別保存到字典中,然后再將所有用例保存到列表中,如[{用例1},{用例2},{用例3}] 2 def read_case(): 3 workbook1=load_workbook('test_case.xlsx') 4 sheet=workbook1['test_data'] 5 max_row=sheet.max_row 6 test_case=[] 7 for row in range(2,max_row+1): 8 sub_data={} 9 sub_data['case_id']=sheet.cell(row,1).value 10 sub_data['title']=sheet.cell(row,2).value 11 sub_data['data']=sheet.cell(row,3).value 12 sub_data['method']=sheet.cell(row,4).value 13 sub_data['expected']=sheet.cell(row,5).value 14 test_case.append(sub_data) 15 print("讀取到的所有測試用例:",test_case) 16 17 read_case()