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)

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

 

posted @ 2020-08-11 18:11  excellent_1  阅读(812)  评论(0编辑  收藏  举报