自动化测试中使用 openpyxl 读取 Excel 文件

本贴最后更新于 988 天前,其中的信息可能已经天翻地覆

一、Excel的组成

Excel文件、表单、单元格

二、openpyxl的安装

  1. 首先需要安装Python环境,
  2. 使用win+R打开运行,输入框输入cmd
  3. 使用以下命令安装openpyxl
pip install openpyxl

三、使用openpyxl读取Excel文件

from openpyxl import load_workbook
#加载Excel
workbook_object = load_workbook(filename='case_data.xlsx')  #将case_data.xlsx文件与Python文件放在同一个目录下,如果不在同一级目录,需要添加路径
#获取表单名称
names= workbook_object.sheetnames  #获取表单的名称返回list
#获取表单对象
#方法一
shett_object=workbook_object['login']
#方法二
shett_object1=workbook_object.worksheets[0]    #获取的表单返回的是list,所以可以通过索引取值
#获取单元格
#方法一
cell_object=shett_object['A1']  #或取得是单元格的对象“A1”,并非"A1"的值
print(cell_object.value)  #通过对象.value 可以获取"A1"的值(单元格内容)
#方法二
cell_object1=shett_object.cell(1,1)  #获取的是第一行第一列的值
print(cell_object1.value)
workbook_object.close()  #读完表后关闭Excel

四、行列操作

from openpyxl import load_workbook
# 加载Excel
workbook_object = load_workbook(filename='case_data.xlsx')
#获取表单名称
shett_object = workbook_object.sheetnames[0]
# 行切片获取数据
result = shett_object.iter_rows(min_row=1, max_row=2, min_col=1, max_col=2, values_only=True) 
# 行切片  (索引从1开始,int类型,切片原则是,两边都包含,包含起始索引值和结束索引值)
# min_row  起始行的索引值
# max_row  结束行的索引值
# min_col  起始列的索引值
# max_col  结束列的索引值
# values_only  false:返回对象   true:返回单元格对应的数据
# 列切片与行切片相同,列切片使用 .iter_cols
print(list(result))

五、数据封装

from openpyxl import load_workbook


class HandleExcel:
    def __init__(self, file_name, sheet_name):
        self.workbook_object = load_workbook(filename=file_name)
        self.sheet_object = self.workbook_object[sheet_name]

    def get_excel_tese_case(self):
        cases_list = []

        datas = list(self.sheet_object.iter_rows(values_only=True))  # 获取Excel表中的所有数据,按行显示,先是第一行的内容

        # 将Excel表中的数据拼成字典

        case_title = datas[0]  # 获取表头
        case_datas = datas[1:]  # 获取表数据
        for case in case_datas:
            result = dict(zip(case_title, case))
            cases_list.append(result)
        self.close_file()
        print(cases_list)
        return cases_list
        print(result)

    def close_file(self):
        self.workbook_object.close()


if __name__ == '__main__':
    cl = HandleExcel(file_name='case_data.xlsx', sheet_name='login')
    cl.get_excel_tese_case()
回帖
请输入回帖内容 ...