一、openpyxl的使用
pip install openpyxl
第一步:打開工作簿(讀取Excel文件中所有的數據保存為工作簿對象)
workbook = openpyxl.load_workbook('cases.xlsx')
第二步:選中表單對象
sheet = workbook['login']
第三步:通過表單選中表格讀取數據
①讀取內容(第五行第四列)
data = sheet.cell(row=5,column=4)
printa(data.value) # 獲取內容用value方法
②寫入內容(保存才會生效)
sheet.cell(row=7,column=3,value='("Python","123456")')
# 寫入內容后,一定要保存才會生效
workbook.save('cases.xlsx')
③獲取最大行和最大列
# 最大行
sheet.max_row
# 最大列
sheet.max_column
④按行獲取所有的格子對象,每一行格子放入一個元組中
sheet.rows
*注意點:不要隨便在表格中敲空格
二、openpyxl的封裝
導包
import openpyxl
封裝
class ReadExcel(object):
"""操作Excl文件"""
def __init__(self, fileName, sheetName):
"""
初始化方法
:param fileName: Excel文件名
:param sheetName: 表單名
"""
self.fileName = fileName
self.sheetName = sheetName
def open(self):
"""打開工作簿,選中表單"""
self.wb = openpyxl.load_workbook(self.fileName)
self.sh = self.wb[self.sheetName]
def save(self):
"""保存工作簿對象的方法"""
self.wb.save(self.fileName)
self.wb.close() # 這一行加不加關系不大,加了可以釋放內存
1、讀取數據
①將每條數據存儲成字典類型
def read_data_dict(self):
"""讀取數據(將每條數據存儲成字典類型)"""
# 打開工作簿
self.open()
# 通過rows獲取Excel文件中所有的行數據,然后把數據轉成列表
rows = list(self.sh.rows)
# 表頭
title = []
# 遍歷Excel文件中的第一行表頭信息
for i in rows[0]:
title.append(i.value)
# 用例數據列表
cases = []
# 遍歷用例數據行
for row in rows[1:]:
# 定義一個列表存放每一行的數據
data = []
# 遍歷每一行的數據
for r in row:
data.append(r.value)
# 把每一行的數據通過zip進行打包,然后轉成字典,存入到用例數據列表中
case = dict(zip(title, data))
cases.append(case)
return cases
②將每條數據存儲成CaseData類對象類型
class CaseData(object):
"""保存用例數據類"""
pass
def read_data_obj(self):
"""讀取數據(將數據保存到CaseData類中)"""
self.open()
rows = list(self.sh.rows)
# 表頭
title = []
# 遍歷Excel文件中的第一行表頭信息
for i in rows[0]:
title.append(i.value)
# 定義用例列表,用來存放用例類列表
cases = []
# 遍歷用例數據行
for row in rows[1:]:
# 定義一個列表存放每一行的數據
data = []
# 遍歷每一行的數據
for r in row:
data.append(r.value)
# 把每一行的數據通過zip進行打包,然后轉成字典,存入到用例數據列表中
case = dict(zip(title, data))
# 定義一個用例存放類對象
case_obj = CaseData()
for k, v in case.items():
# 通過setattr()給對象添加屬性
setattr(case_obj, k, v)
# 把對象添加到列表中
cases.append(case_obj)
return cases
2、寫入數據
def write_data(self, row, column, value):
"""
寫入數據
:param row: 行
:param column: 列
:param value: 數據
"""
self.open()
# 指定行列進行寫入數據
self.sh.cell(row=row, column=column, value=value)
# 保存
self.wb.save(self.fileName)
# 關閉
self.wb.close()
**需要用到操作excel的時候可以直接進行調用,減少重復的代碼量。