zoukankan      html  css  js  c++  java
  • python操作excel

    一、openpyxl
    1、安装
    pip install openpyxl

    2、excel操作步骤
    2.1、找到目标excel
    2.2、打开
    2.3、读取数据、编辑excel单元格
    2.4、保存
    2.5、关闭
    3、openpyxl 操作
    3.1、创建wb对象(找到excel并打开它)
    3.2、获取sheet对象
    3.3、找到要操作的单元格
    3.4、读数据、修改数据
    3.5、保存,关闭

    4、操作演示
    from openpyxl import load_workbook
    # 3.1、创建wb对象(找到excel并打开它)
    wb = load_workbook(filename="testCase.xlsx")
    # 3.2、获取sheet对象
    sh = wb["login"]
    # 3.3、找到要操作的单元格
    cell = sh.cell(row=2, column=2)
    # 3.4、读数据
    result = cell.value
    print(result)
    # 关闭
    wb.close()

    5、load_workbook参数说明
    filename:excel文件名称(带路径)
    read_only=False:可读可写,默认False,只读

    keep_vba=KEEP_VBA:保留vba代码
    data_only=False:默认是False,有计算公式的单元格直接读出来的是公式
    True:有公式的单元格读出来是计算后的结果
    keep_links=True:保留外部链接

    6、获取sheet对象
    6.1、sh = wb["login"] 常用
    6.2、res = wb.sheetnames 返回一个sheet名称的list
    6.3、for name in wb 遍历sheet对象
    6.4、res = wb.worksheets[1]

    7、找到要操作的单元格
    7.1、res = sh["B2"]
    7.2、cell = sh.cell(row=2, column=2)

    8、行操作
    1、 res = sh.rows 获取值就要通过for 循环去拿(双重)
    2、获取最大行
    res = sh.max_row

    3、行切片
    for val in sh.iter_rows(min_row=1,max_row=5,min_col=1,max_col=5,values_only=True):
    print(val)
    # min_row=None: 起始行的索引(不写默认为1),max_row:结束行索引不写的话默认是最大值,索引从1开始
    # min_col=起始列的索引(不写默认为1), max_col:结束列的索引(不写的话默认是最大值),索引从1开始,
    # values_only=False 返回单元格的对象
    # values_only=True 返回单元格的值

    9、列操作
    1、获取列对象(所有),如果要获取值还是要用value方法(for循环去取值)
    res = sh.columns

    2、获取最大的列[参数的作用同行切片]
    res2 = sh.max_column # 获取最大列
    """
    # 列操作
    from openpyxl import load_workbook
    wb = load_workbook(filename="testCase.xlsx")
    sh = wb["login"]
    #res = sh.columns
    #print(list(res))
    # res2 = sh.max_column # 获取最大列
    # print(res2)

    for val in sh.iter_cols(min_row=1,max_row=3,min_col=1,max_col=3,values_only=True):
    print(val)


    # 行切片
    # from openpyxl import load_workbook
    # wb = load_workbook(filename="testCase.xlsx")
    # sh = wb["login"]
    # for val in sh.iter_rows(min_row=1,max_row=5,min_col=1,max_col=5,values_only=True):
    # print(val)


    # min_row=None: 起始行的索引(不写默认为1),max_row:结束行索引不写的话默认是最大值,索引从1开始
    # min_col=起始列的索引(不写默认为1), max_col:结束列的索引(不写的话默认是最大值),索引从1开始,
    # values_only=False 返回单元格的对象
    # values_only=True 返回单元格的值
    # [1,2,3,4,5]


    # res = sh["B2"]
    # 获取最大行
    # res = sh.max_row
    # print(res)


    # res = sh.rows # 获取所有行对象
    # for i in list(res):
    # print(i) # 对象
    # #print(i.value)
    # for ii in i:
    # print(ii.value) #值
    # wb.close()


    # from openpyxl import load_workbook
    # wb = load_workbook(filename="testCase.xlsx")
    # #sh = wb["login"]
    # res = wb.worksheets[1]
    # print(res)
    # wb.close()

    # 3.1、创建wb对象(找到excel并打开它)
    # wb = load_workbook(filename="testCase.xlsx")
    # print("wb对象:",wb)
    #
    # # 3.2、获取sheet对象
    # sh = wb["login"]
    # print("sh对象:",sh)
    #
    # res = wb.sheetnames
    # print('sheet对象:',res)
    #
    # list_test = ['register', 'login', 'recharge', 'invest', 'audit', 'add_loan', 'member_info', 'all']
    # for i in list_test:
    # print(i)
    #
    # for name in wb:
    # print('一个个拿sheet:',name)

    二、写表操作
    1、sh["A1"]="test1" #给A1单元格赋值
    2、sh.cell(row=1,column=2).value="test2" #给A1单元格赋值
    sh.cell(row=1,column=2,value="test03") #给A1单元格赋值
    """
    from openpyxl import load_workbook
    wb = load_workbook(filename="testCase.xlsx")
    sh = wb["login"]
    # sh["A1"]="test1" #给A1单元格赋值
    # sh.cell(row=1,column=2).value="test2" #给A1单元格赋值
    # sh.cell(row=1,column=2,value="test03")

    # 在表格最下面去写,按行写入,每一个元素站一个单元格
    test_list = [1,2,3,4,5]
    sh.append(test_list)
    wb.save("testCase.xlsx")


    # 3.3、找到要操作的单元格对象
    # cell = sh.cell(row=2, column=2)
    # print("cell对象:",cell)
    #
    # # 3.4、读数据
    # result = cell.value
    # print(result)
    #
    # # 关闭
    # wb.close()

    # 获取测试用例数据
    from openpyxl import load_workbook
    def get_test_case():
    wb = load_workbook(filename="testCase.xlsx") # 实例化excel
    sh = wb["login"] # 获取sheet
    all_excel_data = list(sh.iter_rows(values_only=True)) # 获取表格所有数据
    excel_title = all_excel_data[0] # 获取表头
    case_data_list = all_excel_data[1:] # 获取所有的用例数据
    test_case_list = [] # 新建空列表,收集所有的测试用例数据
    for case in case_data_list:
    #print('表头',excel_title)
    #print('测试用例',case)
    test_case = dict(zip(excel_title,case)) # 数据拼接,用表头与测试用例数据进行组装拼接成dict
    test_case_list.append(test_case) # 将每次拼接好的测试用例添加到test_case_list
    #print("拼接后的数据:",test_case)
    #print(len(test_case_list))
    wb.close()
    return test_case_list
    res = get_test_case()
    print(res)

    学而不思则罔,思而不学则殆
  • 相关阅读:
    Redis主从复制
    Centos6克隆虚拟机改IP和mac地址
    Liunx中ERROR 2002 (HY000) Can't connect to local MySQL server through socket 'varlibmysqlmysql.sock' (2)报错
    linux安装redis
    每天五分钟带你了解Redis
    sqiud --ACL控制应用、sarg日志分析、反向代理
    squid--透明代理
    Squid--传统代理
    Tomcat+Nginx实现动静分离
    -bash: nginx: 未找到命令/没有这个文件
  • 原文地址:https://www.cnblogs.com/linyu51/p/15775936.html
Copyright © 2011-2022 走看看