Python中Openpyxl库的读取文件,写入文件,新建文件的方法

笔者做自动化的时候常用的方法
openpyxl的执行用例后写入报告

import openpyxl,os
#openpyxl 执行用例后写入报告
def write_reporter(filepath,content):
    #该报告的标题名 可传参也可以写死
    title=['用例名','用例数据','预期结果','实际结果','执行结果','运行时间']
    #如果不存在当前报告就新建 如果存在就写入
    if not os.path.exists(filepath):
        #新建一个新工作表
        excel=openpyxl.Workbook()
        #获取活动页面
        sheet=excel.active
        #设置该报告的sheet名字  可参数化
        sheet.title='inputdata'
        for i in range(len(title)):
            #写入sheet页第一行的单元格的数据
            sheet.cell(row=1,column=i+1).value=title[i]
        #必须保存
        excel.save(filepath)
    else:
        #打开文件
        excel=openpyxl.load_workbook(filepath)
        sheet=excel['inputdata']
        #获取当前页面的行数 为了不重复写 追加写
        maxrow=sheet.max_row
        for i in range(len(content)):
            #追加写入新的执行情况
            sheet.cell(row=maxrow+1,column=i+1).value=content[i]
        #保存
        excel.save(filepath)

当报告中有失败的案例之后就会挑选到新的页面中,方便维护人员的查看

 #挑选失败的报告到新的fail页       
 def pick_fail(filepath):
    #读取工作表
    excel=openpyxl.load_workbook(filepath)
    #获得当前的sheet页的长度数据
    sheet_len=len(excel.sheetnames)
    #如果工作表有两个sheet就删掉一个 为了最后挑选fail的报告
    if sheet_len!=1:
        #删除fail页面
        excel.remove(excel['fail'])
        #新建页面
        fail_reporter=excel.create_sheet('fail',1)
    else:
        fail_reporter=excel.create_sheet('fail',1)
    #获取sheet页名inputdata报告页
    reporter=excel['inputdata']
    #遍历报告的内容
    for index,content in enumerate(reporter):
        #创建一个空列表
        fail_title = []
        #如果是标题和报告结果为fail就挑选到fail页
        if index==0 or content[-2].value=='fail':
            for i in range(len(content)):
                #添加该行每格数据到列表中
                fail_title.append(content[i].value)
            #添加fail行数据到fail页
            fail_reporter.append(fail_title)
    #保存当前页面 一定要写
    excel.save(filepath)
    

openpyxl在用例之前执行读取文件的操作,返回之后是个列表,可循环遍历取值来驱动测试用例

 #在用例执行前读取Excel文件
def read_reporter(filepath):
    #打开文件
    excel=openpyxl.load_workbook(filepath)
    #打开以inputdata的sheet页
    reporter=excel['inputdata']
    #创建一个空列表 为了添加读取的每行数据
    list_content=[]
    #读取sheet页 遍历出来下标和每行的数据
    for index,cell_content in enumerate(reporter):
        #为了添加一行的数据
        content=[]
        for i in range(len(cell_content)):
            #读取一行中每格的数据
            content.append(cell_content[i].value)
        list_content.append(content)
    #为了读取报告的使用
    return list_content
    

进阶版本,xlrd可以查看一个文档的指定sheet页的页码内容

def read_sheet(f, num):
    # 打开表格得到一个文件对象

    books = xlrd.open_workbook(f)  # 打开指定的工作表 必须excel表格
    # 通过下标获取指定页码对象
    sheet = books.sheets()[num]  # 指定工作表的页码
    rows = sheet.nrows  # 获取行数 必须要这样才能获取内容
    content = []
    for i in range(1, rows):
        case_lists = sheet.row_values(i)  # 读取内容
        content.append(case_lists)
    return content  # 返回内容

你可能感兴趣的:(python语法,python)