python自动化-操作excel方法的封装

读取excel数据、填写执行结果:

 

import openpyxl
from common.handle_path import DATA_FILEDIR
from openpyxl.styles import PatternFill, colors


class HandleExcel:
    """操作excel文件"""

    def __init__(self, filename, sheetname):
        """
        初始化对象属性
        :param filename: excel文件路径
        :param sheetname: 表单名
        """
        self.filename = filename
        self.sheetname = sheetname
        # 获取工作簿对象
        self.wb = openpyxl.load_workbook(filename)
        # 选择表单
        self.sh = self.wb[sheetname]

    def read_data(self):
        """读取excel中的数据"""
        # 按行获取所有的数据,转换为列表
        rows_data = list(self.sh.rows)
        # 创建一个空列表用来保存所有的用例数据
        cases_data = []
        # 获取表单中的表头数据,放入title这个列表中
        title = []
        for i in rows_data[0]:
            title.append(i.value)

        # 获取除表头之外的其他行数据
        for item in rows_data[1:]:
            # 每遍历出来一行数据,就创建一个空列表,来存放该行数据
            values = []
            for i in item:
                values.append(i.value)
            # 将该行的数据和表头进行打包,转换为字典
            case = dict(zip(title, values))
            # 将该行数据打包的字典,放入cases_data中
            cases_data.append(case)
        # 返回读取出来的所有数据
        return cases_data

    def write_data(self, row, column, value):
        """
        写入数据
        :param row: 行
        :param column: 列表
        :param value: 写入的值
        :return:
        """

        self.sh.cell(row=row, column=column, value=value)

        # 以下为定义填充颜色,需要根据自己的断言结果进行设置
        fill_pass = PatternFill(fill_type='solid', fgColor="00FF00")
        fill_failed = PatternFill(fill_type='solid', fgColor=colors.RED)
        if value == "pass":
            self.sh.cell(row=row, column=column).fill = fill_pass
        elif value == "failed":
            self.sh.cell(row=row, column=column).fill = fill_failed
        else:
            pass
        
        # 把工作簿保存为文件
        self.wb.save(self.filename)


if __name__ == '__main__':
    # 调试读数据的代码
    # excel = HandleExcel(DATA_FILEDIR, "name")
    # cases = excel.read_data()
    # print(cases)
    # 调试写数据的代码
    excel = HandleExcel(DATA_FILEDIR, "test")
    excel.write_data(row=1, column=1, value="pass")
    excel.write_data(row=1, column=2, value="failed")
    excel.write_data(row=1, column=3, value="xxxx")
    print("完成")

 

posted @ 2020-08-29 19:38  薄咊-  阅读(309)  评论(0编辑  收藏  举报