python利用openpyxl庫操作Excel來讀取、修改、寫入測試數據


一、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()
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM