1. 程式人生 > 其它 >python中openpyxl模組使用

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)

本文來自部落格園,作者:大頭~~,轉載請註明原文連結:https://www.cnblogs.com/xiaoying-guo/p/14991932.html