• Python 读取Excel用例——openpyxl模块


    openpyxl是第三方库,专门处理Excel2007及以上版本产生的xlsx文件

    Python官方库一般使用xlrd库来读取Excel文件,使用xlwt库来生成Excel文件,使用xlutils库复制和修改Excel文件,这三个库只支持到Excel2003。

    openpyxl中有三个不同层次的类,Workbook是对工作簿的抽象,Worksheet是对表格的抽象,Cell是对单元格的抽象,每一个类都包含了许多属性和方法。

    一、Excel基本操作:

    (1)打开一个Excel

    from openpyxl import load_workbook

    wb = load_workbook("文件名称.xlsx")

    (2)获取sheetname

    sheet_name = wb["sheet名称"]

    (3)获取单元格数据

    sheet_name.cell(i,j).value  #第i行 第j列

    二、实际接口用例操作

    from openpyxl import load_workbook


    class TestExcel:

    def __init__(self,filepath): # 初始化,定义打开文件名称参数化
    self.filepath = filepath
    self.wb = load_workbook(self.filepath)

    # 获取sheet下的所有数据
    def get_TestExcel(self,sheetname):
    sheet = self.wb[sheetname] # 打开sheet
    test_data = [] # 把所有行的数据放入列表中

    for i in range(2,sheet.max_row + 1): # sheet.max_row 获取最大行
    sub_data = {} # 把每行的数据放到字典中
    for j in range(1,sheet.max_column+ 1): # sheet.max_column 获取最大列
    sub_data[sheet.cell(1,j).value] = sheet.cell(i,j).value
    test_data.append(sub_data) # 拼接每行单元格的数据

    return test_data

    # 获取指定行的数据
    def get_TestExcel_row(self,sheetname,row_s,row_e):
    sheet = self.wb[sheetname]
    test_data = []
    if row_s >= 2 and row_e <= sheet.max_row+1:
    for i in range(row_s,row_e+1):
    sub_data = {}
    for j in range(1,sheet.max_column+1):
    sub_data[sheet.cell(1,j).value] = sheet.cell(i,j).value
    test_data.append(sub_data)

    return test_data

    # 将返回结果写入Excel
    def write_back(self,sheetname,case_id,actual,result,sql="/"):
    sheet = self.wb[sheetname]
    for i in range(2,sheet.max_row+1):
    id = sheet.cell(i,1).value
    if id == case_id:
    sheet.cell(i,8).value = actual
    sheet.cell(i,9).value = result
    sheet.cell(i,10).value = sql
    break
    try:
    self.wb.save(self.filepath)
    except Exception as e:
    print("写入后保存失败".format(self.filepath))
    raise e


    if __name__ == "__main__":
    # t = TestExcel("接口用例.xlsx").get_TestExcel("工作簿1")
    t = TestExcel("接口用例.xlsx").get_TestExcel_row("工作簿1",row_s=2,row_e=3)
    print(t)


  • 相关阅读:
    开源项目
    分享知识 学无止境 只做正确的事 伸出援助之手
    公开支持与鼓励,私下质疑与建议(转)
    天使投资人给阿里新贵们的一些建议(转)
    沟通中“倾听”的五个层次
    intent
    SafeNet推出行业首款白盒password软件保护解决方式
    应用系统设计思考
    常见的几种RuntimeException
    ASP.NETserver控件使用之Reportviewer 报表
  • 原文地址:https://www.cnblogs.com/xiaobai-0713/p/12944671.html
Copyright © 2020-2023  润新知