首页 > 其他分享 >openpyxl读取excel返回列表套列表格式数据

openpyxl读取excel返回列表套列表格式数据

时间:2023-03-20 15:58:25浏览次数:34  
标签:case run openpyxl list excel 列表 data col row

'''
1.打开用例文件
2.根据传参读取对应的sheet
3.根据传参指定的列获取对应的用例数据-多列,通过*['标题','请请求']  *args方式传递
4.获取到的数据可以转字典的转成字典,不需要的保持原数据
5.能根据用例编号列对应的名称和编号进行筛选用例
6.数据放回形式,列表套列表[['名称','编号','标题'],[],[]]

'''
import json

from openpyxl import load_workbook
from utils.handle_path import data_path
from pathlib import Path


def get_excel_data(file_path, sheet_name, case_name, *args, run_case=None):
    res_list = []  # 存放最终结果 [[],[],[]]
    col_data_index = []  # 存放指定列的序号
    run_case_list = []  # 实际运行的case列表

    work_book = load_workbook(file_path)  # 打开文件
    work_sheet = work_book[sheet_name]

    col_data_one = [row_data[0].value for row_data in work_sheet.rows]  # 获取第0列的数据
    row_data_one = [col_data[0].value for col_data in work_sheet.columns]  # 获取第0行的数据

    for col_name in args:  # 根据传入的列的数据获取列编号 *['标题','请求参数','响应结果']
        col_data_index.append(row_data_one.index(col_name))

    if run_case is None or 'all' in run_case or run_case == []:
        run_case_list = col_data_one
    else:
        for case in run_case:
            if '-' in case:
                start, end = case.split('-')
                for num in range(int(start), int(end)):
                    run_case_list.append(f'{case_name}{num:0>3}')
            else:
                run_case_list.append(f'{case_name}{case:0>3}')
    # print(work_sheet.cell(1, 1).value)  # cell(1,1)从1开始
    for row_idx, row in enumerate(col_data_one, 1):  # 遍历第0列获取行号和第0列第N行的值
        # print('row_idx:', row_idx, 'row:', row, run_case_list)
        if case_name in str(row) and str(row) in run_case_list:  # 去掉第一行
            row_data_list = []
            for col_idx in col_data_index:
                row_data_list.append(is_json(work_sheet.cell(row_idx, col_idx + 1).value))
                # print(row_idx, col_idx + 1)
            res_list.append(row_data_list)
    return res_list


def is_json(data_str):
    try:
        return json.loads(data_str)
    except:
        return data_str


if __name__ == '__main__':
    res = get_excel_data(Path(data_path / 'test.xlsx'), '登录模块', 'Login',
                         *['用例编号', '标题', '请求参数', '响应预期结果'], run_case=['all', "001", "003"])
    print(res)

 

标签:case,run,openpyxl,list,excel,列表,data,col,row
From: https://www.cnblogs.com/dyjnicole/p/17236558.html

相关文章

  • Android 关于列表ListView
    一、ListViewandroid-pulltorefresh一个强大的拉动刷新开源项目,支持各种控件下拉刷新,ListView、ViewPager、WebView、ExpandableListView、GridView、ScrollView、Horiz......
  • Vue3 + Swiper开发轮播列表组件
    Vue3+Swiper开发轮播列表组件前端开发中,轮播列表的场景并不少见,通常使用Vue+Swiper来实现,上手比较快。安装依赖直接执行npm命令npmiswiper组件编写Html模板......
  • 接口测试——Excel接口测试用例访问(六)
    pandas访问链接https://www.runoob.com/pandas/pandas-install.html1.pandas库的安装及库安装方法总结方法一:cmd命令行执行pipinstallpandas1.Windows+R,输入cmd打开......
  • android stdio对于xml中列表的展示
    我们需要用到一个控件,ListView如果愿意深度学习,可以观看下方的文章。(11条消息)Android最常用的控件ListView(详解)_androidlistview_撩得Android一次心动的博客-CSDN博......
  • 根据当前时间计算倒计时,在列表中计算倒计时
    最近在写一个类似拼夕夕拼团的活动,就几个人付相同的钱,即可成团。这就需要一个倒计时,来计算活动结束时间代码如下:varthat=this;varh,m,s,t......
  • excel文件本地下载和文件上传工具类
    packagecom.xxiang.common.utils;/***@Author:小样儿*@PackageName:com.xxiang.common.utils*@ClassName:ExcelUtils*@Description:**/importcn.aftert......
  • SpringBoot+Vue+EasyExcel实现excel简单导入导出
    1.先导入EasyExcel依赖<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.......
  • stATA 导入EXCEL 并附加值标签
    .exportexcelusing"D:\statashu\221.xls",firstrow(variables)nolabel//将当前表导出为xls,第一行作为标题,没有值标签//导入xls,第一行作为变量名importexcel......
  • openpyxl样式详解17
    pipinstallopenpyxl"""1.警告:openpyxl只可以操作xlsx格式的文件,如果想操作xls请使用xlrd这边索引是从1开始的更离谱的是创建sheet页面的索引竟然是从0开始的#然后还......
  • Excel合并单元格排序
    Excel中合并单元格特别令人头疼!!!我们可以利用函数进行排序,希望这篇文章可以帮到你!一、MAX()函数方法选中需要排序的单元格,然后在编辑栏输入=MAX($A$1:A1)+1按Ctrl+En......