本文的文字及圖片來源於網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。
PS:如有需要Python學習資料的小伙伴可以加點擊下方鏈接自行獲取
http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef
一、openpyxl的使用
pip install openpyxl
第一步:打開工作簿(讀取Excel文件中所有的數據保存為工作簿對象)
workbook = openpyxl.load_workbook('cases.xlsx')
第二步:選中表單對象
sheet = workbook['login']
第三步:通過表單選中表格讀取數據
①讀取內容(第五行第四列)
1 data = sheet.cell(row=5,column=4) 2 printa(data.value) # 獲取內容用value方法
②寫入內容(保存才會生效)
1 sheet.cell(row=7,column=3,value='("Python","123456")') 2 # 寫入內容后,一定要保存才會生效 3 workbook.save('cases.xlsx')
③獲取最大行和最大列
# 最大行 sheet.max_row # 最大列 sheet.max_column
④按行獲取所有的格子對象,每一行格子放入一個元組中
sheet.rows
注意點:不要隨便在表格中敲空格
二、openpyxl的封裝
導包
import openpyxl
封裝
1 class ReadExcel(object): 2 """操作Excl文件""" 3 4 def __init__(self, fileName, sheetName): 5 """ 6 初始化方法 7 :param fileName: Excel文件名 8 :param sheetName: 表單名 9 """ 10 self.fileName = fileName 11 self.sheetName = sheetName 12 13 def open(self): 14 """打開工作簿,選中表單""" 15 self.wb = openpyxl.load_workbook(self.fileName) 16 self.sh = self.wb[self.sheetName] 17 18 def save(self): 19 """保存工作簿對象的方法""" 20 self.wb.save(self.fileName) 21 self.wb.close() # 這一行加不加關系不大,加了可以釋放內存
1、讀取數據
①將每條數據存儲成字典類型
1 def read_data_dict(self): 2 """讀取數據(將每條數據存儲成字典類型)""" 3 # 打開工作簿 4 self.open() 5 # 通過rows獲取Excel文件中所有的行數據,然后把數據轉成列表 6 rows = list(self.sh.rows) 7 # 表頭 8 title = [] 9 # 遍歷Excel文件中的第一行表頭信息 10 for i in rows[0]: 11 title.append(i.value) 12 # 用例數據列表 13 cases = [] 14 # 遍歷用例數據行 15 for row in rows[1:]: 16 # 定義一個列表存放每一行的數據 17 data = [] 18 # 遍歷每一行的數據 19 for r in row: 20 data.append(r.value) 21 # 把每一行的數據通過zip進行打包,然后轉成字典,存入到用例數據列表中 22 case = dict(zip(title, data)) 23 cases.append(case) 24 return cases
②將每條數據存儲成CaseData類對象類型
1 class CaseData(object): 2 """保存用例數據類""" 3 pass 4 def read_data_obj(self): 5 """讀取數據(將數據保存到CaseData類中)""" 6 self.open() 7 rows = list(self.sh.rows) 8 # 表頭 9 title = [] 10 # 遍歷Excel文件中的第一行表頭信息 11 for i in rows[0]: 12 title.append(i.value) 13 # 定義用例列表,用來存放用例類列表 14 cases = [] 15 # 遍歷用例數據行 16 for row in rows[1:]: 17 # 定義一個列表存放每一行的數據 18 data = [] 19 # 遍歷每一行的數據 20 for r in row: 21 data.append(r.value) 22 # 把每一行的數據通過zip進行打包,然后轉成字典,存入到用例數據列表中 23 case = dict(zip(title, data)) 24 # 定義一個用例存放類對象 25 case_obj = CaseData() 26 for k, v in case.items(): 27 # 通過setattr()給對象添加屬性 28 setattr(case_obj, k, v) 29 # 把對象添加到列表中 30 cases.append(case_obj) 31 return cases
2、寫入數據
1 def write_data(self, row, column, value): 2 """ 3 寫入數據 4 :param row: 行 5 :param column: 列 6 :param value: 數據 7 """ 8 self.open() 9 # 指定行列進行寫入數據 10 self.sh.cell(row=row, column=column, value=value) 11 # 保存 12 self.wb.save(self.fileName) 13 # 關閉 14 self.wb.close()