python从excel取值的方法封装
有很多朋友对从excel的取值不知道如何遍历的可以学习下面方法:
方式一:
excel样式:
from openpyxl import load_workbook from conf import read_path import os class DoExcel: def __init__(self,file_path,sheet_name): self.file_path=file_path self.sheet_name=sheet_name def do_excel(self): wb=load_workbook(self.file_path) sheet=wb[self.sheet_name] test_data=[] #所有行的数据存到这个列表里面 for i in range(2,sheet.max_row+1): sub_data={} #每一行用例的数据存在一个字典里面 sub_data['case_id']=sheet.cell(i,1).value sub_data['title']=sheet.cell(i,2).value sub_data['method']=sheet.cell(i,3).value sub_data['url']=sheet.cell(i,4).value sub_data['param']=sheet.cell(i,5).value test_data.append(sub_data) return test_data if __name__ == '__main__': path=os.path.join(read_path.test_data_path) test_data=DoExcel(path,'test_data').do_excel() print(test_data)
方式二:
代码如下:
import os from openpyxl import load_workbook from loguru import logger # 类与上面的代码/注释之间隔2行 class HandleExcel: # 类内部方法之间,用一行隔开。 def __init__(self,excel_path: str,sheet_name): """ 打开一个excel文件,然后加载进来。 :param excel_path: """ logger.info("当前打开的excel文件为:{}".format(excel_path)) try: self.wb = load_workbook(excel_path) except: logger.exception("excel文件加载失败!") raise self.select_sheet_by_name(sheet_name) def select_sheet_by_name(self,sheet_name): self.sh = self.wb[sheet_name] logger.info("当前正在操作的表单名是:{}".format(sheet_name)) def read_all_rows_data(self): """ 从选定的表单当中,第一行作为key. 将后面的每一行数据,与第一行拼接成一个字典数据,作为一条测试用例数据。 将所有测试用例数据,添加到一个列表当中。 :return: 测试用例数据列表 """ sh_all_datas = list(self.sh.values) # 每一行数据的keys keys = sh_all_datas[0] # 列表变量 - 存放表单当中的每一行数据 all_cases_datas = [] # 遍历表单表当中,从第2行开始的每一行测试数据,并与第一行的keys拼接成一个字典。 for values in sh_all_datas[1:]: one_case = dict(zip(keys, values)) logger.info("用例数据为:\n{}".format(one_case)) all_cases_datas.append(one_case) return all_cases_datas if __name__ == '__main__': # 得到excel文件的路径 file_dir = os.path.dirname(os.path.abspath(__file__)) # print(file_dir) excel_path = os.path.join(file_dir, "apitest.xlsx") # \print(excel_path) # 实例化HandleExcel类 he = HandleExcel(excel_path,"登录") # he.select_sheet_by_name("登录") cases = he.read_all_rows_data()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端