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

      我们在写测试用例的时候,是创建一个表格.xlsx,然后把各种条件加到这张表格中去,所以,如何对excel表格操作,是相当重要的一环,那么,接下来,这篇博客就直接教会大家如何通过python去处理平时工作中用到的测试用例表格,我们一步一步来,慢慢的给各位同学讲明白。

      首先,给大家先补个基础的常识,就是你对一个excel的了解有多少?看下图所示:

    一、excel操作三大对象

    workbook 工作薄:一个excel文件会被加载为一个工作薄对象workbook
        form       表单:excel文件中,每个sheet表达会被加载成一个工作表对象sheet
       cell        单元格:工作表中的每一个格子就是一个单元格,即表格对象cell

    好,先把这些基础的知识先了解,因为,excel主要就是操作这三个对象workbook、sheet、cell

    以下,我拿一段代码举例,在用python操作excel时,先要安装一个openpyxl,如何安装?

     安装完成以后,开始建一个表格文件.xlsx,然后复制或者剪切到python的具体文件夹目录下,以下是我自己随意建的表格:

    代码如下:

    import openpyxl
    
    # 第一步:将excel文件加载到一个工作薄对象中
    wb = openpyxl.load_workbook("abc.xlsx")
    # 第二步:选择文件中的表单
    sh = wb["login"]
    # 第三步:读取内容 ,cell表示单元格
    res = sh.cell(row=1, column=1)   # 第一行第一列
    print(res.value)           # 打印出 111

     以上就是简单的示例:读取某个单元格的内容

     二、数据的写入

    (单独用的不多,不算重点,了解即可)

    关于excel数据的写入,单独用的不多,一般会和会面的读取数据写入数据一起结合用,现在只是单独拿出来讲解,先做个大概的了解,可以总结以下四步规律

    第一步:将excel文件加载到一个工作薄对象中
      wb = openpyxl.load_workbook("文件名")
    第二步:选择文件中的表单
      sh = wb["表单名"]
    第三步:往表格中写入数据
      sh.cell(row=行, column=值, value='写入的值')
    第四步:保存
      wb.save("文件名")

    注意:在往excel中,写入数据的时候,文件不能处于一个打开的状态,否则会报错

    import openpyxl
    
    # 第一步:将excel文件加载到一个工作薄对象中
    wb = openpyxl.load_workbook("abc.xlsx")
    # 第二步:选择文件中的表单
    sh = wb["login"]
    # 第三步:往表格中写入数据
    sh.cell(row=1, column=1, value='jack')
    # 第四步:保存
    wb.save("abc.xlsx")    # 打开表格看,111已经变为jack

    三、数据的批量读取

    比如:给你一张表格,把表格的内容,一次性读取出来,怎么办?如何操作?如何用python来实现

    import openpyxl
    # 第一步:将excel文件加载到一个工作薄对象中
    wb = openpyxl.load_workbook("yyy.xlsx")
    # 第二步:选择文件中的表单
    sh = wb["login"]
    
    res = list(sh.rows)
    for item in res:
        for c in item:
            print(c.value, end="    ")
        print()   # 起着换行的作用

     四、excel用例数据读取组装成列表嵌套字典的格式

    先给大家看一下这张表 testcases ,

     我们想把它读取出来,转化成开头的那种列表中嵌套字典的模式,怎么来弄?有的同学要问,为什么要弄成那种格式,因为,要和ddt结合起来使用,转化成这种格式:

     方便ddt的使用,只要转化成这个列表中嵌套字典的格式,以后可以直接套用

    import openpyxl
    # 第一步:将excel文件加载到一个工作簿对象中
    wb = openpyxl.load_workbook("testcases.xlsx")
    # 第二步:选择文件中的表单
    sh = wb["login"]
    
    res = list(sh.rows)
    # 获取第一行的单元格
    title = []
    # 遍历第一行所有的单元格,将格子中的值添加到列表title中
    for c in res[0]:
        title.append(c.value)
    
    cases_data = []
    # 遍历除第一行之外所有的行
    for row in res[1:]:
        data = []
        for c in row:
            data.append(c.value)
        item = dict(zip(title, data))
        cases_data.append(item)
    print(cases_data)

     

     五、excel的封装

    import openpyxl
    
    
    class Excel:
        def __init__(self, filename, sheet_name):
            self.filename = filename
            self.sheet_name = sheet_name
    
        def read_data(self):
            """读数据"""
            # 第一步:将excel文件加载到一个工作簿对象中
            wb = openpyxl.load_workbook(self.filename)
            # 第二步:选择文件中的表单
            sh = wb[self.sheet_name]
            res = list(sh.rows)
            # 获取第一行的单元格
            title = []
            # 遍历第一行所有的单元格,将格子中的值添加到列表title中
            for c in res[0]:
                title.append(c.value)
            cases_data = []
            # 遍历除第一行之外所有的行
            for row in res[1:]:
                data = []
                for c in row:
                    data.append(c.value)
                case = dict(zip(title, data))
                # print(case)
                cases_data.append(case)
            return cases_data
    
        def write_data(self, row, column, value):
            """写数据"""
            # 第一步:将excel文件加载到一个工作簿对象中
            wb = openpyxl.load_workbook(self.filename)
            # 第二步:选择文件中的表单
            sh = wb[self.sheet_name]
            sh.cell(row=row, column=column, value=value)
            wb.save(self.filename)

    未完待续。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  • 相关阅读:
    3、生成证书请求文件
    2、申请苹果App ID
    登录iOS Dev Center
    SQL Server 合并行
    asp 月末 月初
    linux
    ASP数组全集,多维数组和一维数组[转]
    oracle 秒
    oracle 存储过程 包 【转】
    linux
  • 原文地址:https://www.cnblogs.com/xj-excellent/p/13470638.html
Copyright © 2011-2022 走看看