from openpyxl import load_workbook
from openpyxl import Workbook
from random import randint
import random

'''
注意:
1.openpyxl库只能读取和编辑.xlsx文件
2.在做读取和编辑操作时,别忘了做关闭,.close()操作
3.如果要编辑的文件被手动打开了,代码则无法执行,注意这是经常犯的错和异常
4.使用.max_row获取的是excell表格的有效数据条数,不过操作时要注意删除有效数据下方的空数据(不要随便在表格中敲空格,会影响判断最大行数和最大列数)
5.注意openpyxl在读取表格时行和列的起始值都是1,不是0
'''
# 读取一个已存在的excell.xlsx文件
def readExl(filePath):
    '''
    读取一个excell表格,并使用字典输出数据
    :param filePath: 文件路径,可以用绝对路径和相对路径,一般建议使用相对路径
    :return: 读取的结果,使用字典存储,返回字典
    '''
    wb = load_workbook(filePath)
    # 打开excell文件
    sheet_name = wb.sheetnames
    # 获取该文件中所有表单的名字,以便后续使用名字打开并读取表单,记住此处sheetnames后面不能带括号,否则会报错
    ws = wb["Sheet1"]
    # 使用sheet名字打开一个sheet表,并获取表格对象
    maxRow = ws.max_row
    # 获取最大行(包含表格中的空格,所以要去掉空格)
    maxColumn = ws.max_column
    # 获取最大列(包含表格中的空格,所以要去掉空格)
    caseDic = {}
    # 定义一个变量,接收一个字典,用于存储从excell表格中读取的数据
    for i in range(2,maxRow+1):
        caseDic[ws.cell(row=i, column=2).value] = []   # 此处我的字典中是存储接口测试用例,故将用例的功能名作为字典的键,键对应的值用列表储存
        for j in range(3,maxColumn+1):
            caseDic[ws.cell(row=i, column=2).value].append(ws.cell(row=i,column=j).value)
            # 从excell读取值存入字典中的列表中,其中row代表表格中的行,column代表表格中的列
    wb.close()  # 记住读取excell表格时一定要关闭,不然容易出现报错
    return caseDic

def writExcell1(fileName,sheetName="Sheet1"):
    '''
    创建一个新的excell表,然后填入值
    :param fileName: 新的excell的存储路径及文件名字
    :param sheetName: 表的名字
    :return:
    '''
    wb = Workbook()
    # 实例化一个表格文件对象
    ws = wb.create_sheet(sheetName,0)
    # 创建一个表格命名为“Sheet1”,0代表表格的下标,类似于列表
    for i in range(1,11):
        for j in range(1,11):
            ws.cell(row=i,column=j).value = randint(1,100)
            # 遍历行和列,填入值,row代表行,column代表列,此处用随机数填入值
    wb.save(fileName)  # 保存并给表格文件命名,命名包含文件的路径和以.xlsx为结尾文件名,路径建议相对路径
    wb.close()      # 关闭表格文件

def writExcell2(fileName,sheetName="Sheet1"):
    wb = load_workbook(fileName)
    # 打开一个excell文件,fileName为文件的路径
    ws = wb[sheetName]
    # 打开一个表格,sheetName为表格sheet的名字
    maxRow = ws.max_row
    # 获取最大行(包含表格中的空格,所以要去掉空格)
    maxColumn = ws.max_column
    # 获取最大列(包含表格中的空格,所以要去掉空格)
    for i in range(1,maxRow+1):
        for j in range(1,maxColumn+1):
            ws.cell(row=i,column=j).value = random.choice(['a','b','c','d','e','f','j','k','l','m'])
            # 读取表格,然后填入值,会将原本的值覆盖,random.choice()为随机数,从指定的范围内选择随机的值,范围可以是列表、元组、字符串
    wb.save(fileName)  # 保存并给表格文件命名,命名包含文件的路径和以.xlsx为结尾文件名,路径建议相对路径
    wb.close()  # 关闭表格文件

if __name__ == "__main__":
    a = writExcell2(r"./测试生成表格.xlsx")

1.readExcell返回结果

对应的接口用例

{'登录': ['login003', '密码错误', '/api/accountWebImpl/system/login', 'post', '{"Content-Type":"application/json"}', '{"loginName":"18202793654","password":"5e4167dfedb02bb1851086563d4f7ba8","keyCode":"SYSMANAGER1643185342503","authCode":"5056","systemName":"熟人司机管理系统"}', 'code码为1', -100]}

2.writExcell1执行结果

2.writExcell2执行结果

 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐