python中openpyxl模塊使用


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)


免責聲明!

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



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