接口自動化--讀取Excel操做(openpyxl)

上次咱們已經將requests庫封裝成咱們想要的樣子了,咱們的接口自動化已經完成了最開始的一步了,接下來咱們須要完成咱們相應的其餘模塊的封裝,下面簡單介紹下咱們在接口自動化須要用到的模塊吧
在接口自動化中咱們經常使用的模塊有requests、openpyxl、pymysql、configparser、ddt、HTMLTestRunner等一些模塊
下面介紹下openpyxl是怎麼用的吧mysql

安裝方式sql

  pip install openpyxlapp

使用方式
直接看代碼塊吧,詳細描述在代碼塊裏面的註釋會寫的函數

1 import openpyxl
2 
3 
4 # 獲取wb的對象
5 wb = openpyxl.load_workbook(r"D:\test.xlsx")
6 # 獲取工做表
7 sheet = wb["test1"]
8 # 讀取改工做表的最大行
9 print(sheet.max_row)

上面的只是一個openpyxl的簡單用法,獲取Excel裏面的數據我直接封裝到類裏面了
下面的封裝方法都是適用任何項目的spa

import openpyxl


class ReadExcel:
"""讀取Excel"""
    def __init__(self, file_path, sheet_name):
        self.file_path = file_path
        self.sheet_name = sheet_name

    def open(self):
        """獲取wb對象"""
        self.wb = openpyxl.load_workbook(self.file_path)

    def get_sheet(self):
        """
        獲取sheet
        """
        self.open()
        sheet = self.wb[self.sheet_name]
        self.wb.close()
        return sheet

    def get_cell(self, row, col):
        """
        獲取單元格對象
        """
        object = self.get_sheet().cell(row, col)
        self.wb.close()
        return object

    def get_cell_value(self, row, col):
        """
        獲取某一個單元格的值
        """
        data = self.get_cell(row, col).value
        self.wb.close()
        return data

    def read(self):
        """讀取全部數據"""
        # 運用列表推導式獲取title
        headers = [i.value for i in self.get_sheet()[1]]
        row_data = []
        for row in range(2, self.get_sheet().max_row+1):
            data = []
            for col in range(1, self.get_sheet().max_column+1):
                data.append(self.get_cell_value(row, col))
            # 用zip函數將兩個列表組合成字典
            data_info = dict(zip(headers, data))
            row_data.append(data_info)
        self.wb.close()
        return row_data

    def write(self, row, col, values):
        """
        回寫數據
        :param row:
        :param col:
        :param values:
        :return:
        """
        self.get_cell(row, col).value = values
        self.save()
        return self.get_cell(row, col).value

    def save(self):
        """
        保存
        :return:
        """
        self.wb.save(self.file_path)

讀取全部的數據展現是這樣的:code

 

 

 

 

其實在作Excel的數據回寫,通常是採用靜態方法,我上面沒有采用靜態方法的緣由是由於個人每個wb對象使用完以後都是進行關閉的,因此不會有什麼影響,可是若是說你的wb對象是在init方法中獲取,建議仍是回寫操做用靜態方法。
--------------------------------------------------------------------------------------------------------------------------------------學無止境,歡迎你們提意見,共同交流進步----------------------------------------------------------------------------------------------------------------------------------------------------------------------對象

相關文章
相關標籤/搜索