1.python使用openpyxl從Excel表格中讀取單個格子數據
import openpyxl #1、加載為工作簿對象,傳入Excel的路徑 wb=openpyxl.load_workbook(r'E:\Python\python 41\working\day17\data\testdata.xlsx') #2、選中要操作的表單,傳入要操作的表單名 sheet=wb['login'] #3、讀取單個表格中的數據,得到的是格子對象 <Cell 'login'.A2> res=sheet.cell(row=2,column=1) print(res) #4、獲取格子對象的值 data=res.value print(data)
2.python使用openpyxl從Excel表格中寫入數據
import openpyxl #1、加載為工作簿對象 wb=openpyxl.load_workbook(r'E:\Python\python 41\working\day17\data\testdata.xlsx') #2、選中要操作的表單 sheet=wb['login'] #3、寫入到python文件 sheet.cell(row=3,column=1,value='python666') #必須進行保存后才能在Excel中看到 wb.save(r'E:\Python\python 41\working\day17\data\testdata.xlsx')
3.python使用openpyxl從Excel表格中讀取單個格子數據
import openpyxl wb=openpyxl.load_workbook(r'E:\Python\python 41\working\day17\data\testdata.xlsx') sheet=wb['login'] #獲取表單中的所有數據,獲取的是格子對象 all_data=sheet.rows #獲取到的數據是列表嵌套元素的格子對象, #datas數據[(<Cell 'login'.A1>, <Cell 'login'.B1>), (<Cell 'login'.A2>, <Cell 'login'.B2>), (<Cell 'login'.A3>, <Cell 'login'.B3>) datas=list(all_data) #對代碼進行優化,利用列表推導式進行簡化代碼,並保存到一個大列表里面 new_list=[] for i in datas: li=[c.value for c in i]#利用for循環獲取c.value,列表推導式 new_list.append(li) print(new_list)#此時獲取到的是全部數據,以列表嵌套列表形式
4.日常測試中測試用例保存在Excel中,第一行一般為title,第二行開始則是測試數據如下圖,所以將表格中的數據獲取出來轉換成列表嵌套字典,方便在后期使用,代碼塊如下:
import openpyxl wb=openpyxl.load_workbook(r'E:\Python\python 41\working\day17\data\testdata.xlsx') sheet=wb['register'] #獲取全部數據的格子對象 data=list(sheet.rows) print(data) #獲取第一行數據,將其作為字典的key title=[i.value for i in data[0]] #獲取除去第一行的全部數據 cases=[] for i in data[1:]: li=[c.value for c in i]#列表推導式,遍歷出每個格子里面的值 res=dict(zip(title,li))#通過zip聚合,dict函數轉換為字典 cases.append(res)#將獲取的字典添加到字典中 print(cases)#獲取的cases就是列表嵌套字典
cases數據如下
{'case_id': 1, 'params': "{'username':'python','password1':'1234567890','password2':'1234567890'}", 'title': '注冊成功', 'except': '{"code": 1, "msg": "注冊成功"}'},
{'case_id': 2, 'params': "{'username':'','password1':'123456','password2':'1234567890'}", 'title': '用戶名為空', 'except': '{"code": 0, "msg": "所有參數不能為空"}'},
{'case_id': 3, 'params': "{'username':'python42','password1':'','password2':'1234567890'}", 'title': '密碼1為空', 'except': '{"code": 0, "msg": "所有參數不能為空"}'},
{'case_id': 4, 'params': "{'username':'py','password1':'1234567890','password2':'1234567890'}", 'title': '用戶名小於6位', 'except': '{"code": 0, "msg": "賬號和密碼必須在6-18位之間"}'},
{'case_id': 5, 'params': "{'username':'python31','password1':'1234567890','password2':'1234567890111'}", 'title': '賬戶已存在', 'except': '{"code": 0, "msg": "該賬戶已存在"}'}]
5.將讀寫Excel封裝為類
import openpyxl class DoExcel: def __init__(self,filepath):
#filepath文件所在路徑,可以傳入絕對路徑 self.filepath=filepath # 讀取表格內容 def read_excel(self,sheet): # 打開工作簿對象 wb = openpyxl.load_workbook(self.filepath) # 確定要操作的表單名 sheet_name=wb[sheet] # 讀取全部數據轉換為列表,獲取到的是每行數據的格子對象 data = list(sheet_name.rows) #獲取表頭 title = [i.value for i in data[0]] #獲取其他數據 cases=[] for i in data[1:]: item = [j.value for j in i] cases.append(dict(zip(title,item))) return cases def write_excel(self,sheet,row,column,value): # 打開工作簿對象 wb = openpyxl.load_workbook(self.filepath) # 確定要操作的表單名 sheet_name = wb[sheet] # 確定要操作的格子,並給定寫入的值 sheet_name.cell(row=row,column=column).value=value # 進行保存 wb.save(self.filepath)