• xmind用例导excel用例,然后再用python排版


    import openpyxl

    #读取excel的
    path=r'服务端测试用例.xlsx'
    excel=openpyxl.load_workbook(path)#data_only=True只有有数据才读吧
    sheet=excel['Sheet1']
    hang=sheet.max_row
    col=sheet.max_column

    # 需求每行数据的最后三个单元格依次做 '用例名称', '操作步骤', '预期结果',前面的单元格都拼接起来作为模块
    # # 思路 以后写代码都先把思路理清楚再写
    # 1 第一层循环把excel表中每行数据作为一个元素保存到列表1里面: return 列表1
    # 2 获得每行的最大列的值(totol_length): 写一个方法
    # 3 第二层循环: 把读取每一行的每一个单元格, 添加到临时列表2中, 创建一个空列表3
    # 4第三层循环1: 遍历列表2, 遍历次数为列表2的长度 - 3(model_lenth), 然后获得第1个元素到倒数第四个单元格的值,
    # 以固定格式依次添加到字符串1中,并且添加前要strip剔除空格和回车 最后把这个字符串1添加到列表3中
    # 5第三层循环2: 遍历列表2, 遍历3次, 取该行倒数第3列到最后一列的数据(model_lenth, totol_length);
    # 也可以不用循环, 写死把倒数3个单元格的值依次添加到列表3中
    # 6这样把数据全都读到了, 然后用两层循环写到excel中就可以了


    #获得某一行最大列,参数:x为row的值,y为sheet的最大column;此方法里需要用到sheet对象
    def row_max(x,y):
    max_col=0
    for a in range(1,y+1):
    value = sheet.cell(row=x, column=a).value
    if value==None:
    break
    max_col += 1
    return max_col

    ####################################读数据
    lin=[]#excel所有数据用列表lin保存,每个元素就是一行数据
    for x in range(1,hang+1):#总共循环这么多次:x代表行数
    rowm=row_max(x,col)#获得每行的最大列的数
    #存放一行数据,4个元素,第一个元素是原来excel一行数据的除后3个单元格按添加起来的,后面三个元素源excel一行最后三个单元格直接添加进来的
    lin2=[]
    for a in range(rowm+1):#循环把每个单元格添加到列表2中
    lin3 = ''#用来拼接模块的字符串
    aaa=0#临时数 判断是不是倒数前3

    if aaa<rowm-3:#判断非倒数前3,如果不是就继续添加到模块路径中
    for index in range(1, rowm-2): # 第三次循环,获得除倒数3个的每个单元格的值
    value = sheet.cell(row=x, column=index).value
    lin3 += (value.strip()+'/')#把每个单元格剔除空格和回车后拼接到lin3这个字符中
    aaa += 1

    lin2.append(lin3.strip())
    break
    #添加倒数3个的字段 写死 传到lin2列表中
    value1 = sheet.cell(row=x, column=rowm - 2).value
    value2 = sheet.cell(row=x, column=rowm - 1).value
    value3 = sheet.cell(row=x, column=rowm).value
    lin2.append(value1)
    lin2.append(value2)
    lin2.append(value3)
    # print(lin2)#打印每行数据
    lin.append(lin2)#添加每行数据到列表,每行数据是一个列表

    ####################################写数据
    # #写excel 方法1 不通过
    # a=1
    # for lin2 in lin:#lin2代表行值
    # b = 1
    # for y in lin2:#y代表要写入的每个单元格值
    # sheet.cell(row=a, column=b).value =y
    # b+=1
    # a+=1
    #方法2
    # print(len(lin[4]))#lin的长度是5
    path2=r'D:\111.xlsx'
    excel2=openpyxl.load_workbook(path2)
    sheet2=excel2['Sheet1']

    for x in range(1,len(lin)+1):
    for y in range(1,5):
    sheet2.cell(row=x, column=y).value =lin[x-1][y-1]
    print(lin[x-1][y-1])


    #注意注意!!!!写的对象不能和读的对象是同一个sheet甚至不能同一个load_workbook,因为会把原来的数据全带过来
    excel2.save(r'111.xlsx')
  • 相关阅读:
    在FreeBSD中pkg包管理器使用实例
    租了一台华为云耀云服务器,却直接被封公网ip,而且是官方的bug导致!
    Java8 Stream对集合的一些应用
    idea 编码UTF-8 设置
    Java RSA非对称加密算法实现
    分库分表 策略 临时
    springboot+dubbo + zookeeper 案例
    跟着华为,学数字化转型(6):一把手工程
    跟着华为,学数字化转型(5):数据保护和业务决策
    跟着华为,学数字化转型(4):数据采集
  • 原文地址:https://www.cnblogs.com/zhaobobo10/p/15768421.html
Copyright © 2020-2023  润新知