python中openpyxl模組使用
阿新 • • 發佈:2021-07-09
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)
本文來自部落格園,作者:大頭~~,轉載請註明原文連結:https://www.cnblogs.com/xiaoying-guo/p/14991932.html