接口自动化--读取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方法中获取,建议仍是回写操做用静态方法。
--------------------------------------------------------------------------------------------------------------------------------------学无止境,欢迎你们提意见,共同交流进步----------------------------------------------------------------------------------------------------------------------------------------------------------------------对象

相关文章
相关标签/搜索