读excel 并拿数据


# 导包
import xlrd

def get_excel_data(file_path,sheet_name,case_name,*args):
# 定义一个列表 存[(第下标1行里 test列里的值,test1列里的值),(第下标1行里 test列里的值,test1列里的值)]
xls_data = []
# 第一步 根据包提供的方法 读某个路径下的xls

workbook = xlrd.open_workbook(file_path)
# 第二步 根据名字找某个表 每个excel里有Sheet1 Sheet2 等
worksheet = workbook.sheet_by_name(sheet_name)
# -------------------------为第三步做准备,
# 行号: [列号,列号]
# {1: [4, 5], 2: [4, 5]}


# 1.打印 标题 也就是下标0 的全部的行
# 2.打印 编号 也就是下标0 的全部的列
title = worksheet.row_values(0)
case_name_all = worksheet.col_values(0)

# 3.-------------------------为第三步做准备 {1: [4, 5], 2: [4, 5]}
dict_index = {} # 行号: [列号,列号]
for one in case_name_all:
if case_name in one:
row_index = case_name_all.index(one)
print(f'行下标:{row_index}')
cols = []
for arg in args: # ['test','test2']
col_index = title.index(arg)
cols.append(col_index)
print(f'列下标:{col_index}')
dict_index[row_index]=cols
print(f"打印行和列的列表:{dict_index}") # 打印行和列的字典
# 3.-------------------------实现了

# 第三步 根据行和列的下标 获得单元格内的值 ['111-1', '222-1', '111-2', '222-2']


xls_data = []
for row_index,col_index in dict_index.items() :
list_value=[]
for col in col_index:
value = worksheet.cell_value(row_index, col)
print(value)
list_value.append(value)
xls_data.append(tuple(list_value)) #[('111-1', '222-1'), ('111-2', '222-2')]
return xls_data
if __name__ == '__main__':
file_path_test = '../data/testcase.xls'
sheet_name_test='Sheet1'
case_name_test='login'
xls_data=get_excel_data(file_path_test,sheet_name_test,case_name_test,*['test','test2'])
print(xls_data)




posted @ 2023-07-28 14:10  胖豆芽  阅读(4)  评论(0编辑  收藏  举报