zoukankan      html  css  js  c++  java
  • 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("完成")
  • 相关阅读:
    Flesch Reading Ease(模拟)
    实验一:词法分析设计
    java—容器学习笔记
    [转载]马士兵Java视频教程 —— 学习顺序
    Java的安装过程
    编程之美初赛第一场
    RCC 2014 Warmup (Div. 2)
    ural 1017. Staircases(dp)
    ural 1012. K-based Numbers. Version 2(大数dp)
    ural 1009. K-based Numbers(简单dp)
  • 原文地址:https://www.cnblogs.com/Jindy-mine/p/13583236.html
Copyright © 2011-2022 走看看