1.前言

在测试工作中,我们不可避免的就是跟测试数据打交道,那么说到数据,我们又不可避免的要跟excel打交道。在工作中,用excel存储测试数据以及测试结果是非常非常常见的。其实,python中有好多专门针对Excel进行数据处理的库,比如:xlrd、xlwt、xlutils、openpyxl以及大数据中常用的pandas等等,他们的侧重点各有不同。我们简单的列举一下:

库名 作用
xlrd 从excel中读取数据,支持xls,xlsx
xlwt 从excel进行修改操作,不支持对xlsx格式的修改
xlutils 在xlrd和xlwt中,对一个已存在的文件进行修改
openpyxl 主要针对xlsx格式的excel进行读取和编辑
pandas 可对csv进行操作,主要用于大数据分析

对于上面这些,我们只需要了解,以后大家可以根据不同的需要去调用不同的库,这里不多做解释。今天,我们要学习的是用openpyxl对Excel中的数据进行处理。

2.Excel处理的基本元素

路径: python中Excel的路径是指他所在的位置,比如:D:\pycharmProject\python_self_study
文件,工作簿:工作簿指的就是一个以.xlsx或者.xls结尾的文件。对应openpyxl中的WorkBook。
表格:Excel中的表格指的是Excel文件中的一个sheet,对应openpyxl中的WorkSheet。
单元格:单元格就是一个sheet中很多小格子中的一个,对应openpyxl中的cell。
行和列:行和列是一个sheet中又内容的行数和列数。注意:sheet中的行和列都是以1开始的。

3.对Excel进行操作

3.1 安装openpyxl模块并导入

第一步很简单,我们要使用模块,必须先安装此模块,所以我们在cmd命令行下输入命令:pip install openpyxl来安装模块,或者也可以在pythoncharm中的settings下的ProjectInterpreter中下载。下载完成后导入

from openpyxl import load_workbook

3.2 workbook

3.2.1 当excel存在时,加载excel中的workbok

# 加载workbook
wb = load_workbook("original_data.xlsx")
print(wb)

3.2.2 创建workbook

# 创建workbook,并且保存
wb = Workbook()
wb.save("test.xlsx")

3.3 获取worksheet

3.3.1 通过索引获取sheet

# 通过索引获取sheet
sheets = wb.worksheets
print(sheets)
sheet1 = sheets[0]
print(sheet1)
sheet2 = sheets[1]
print(sheet2)

我们通过workbook的worksheets属性获取他的所有sheet对象,然后根据索引获取自己想要的那个sheet,查看打印如下,第0个sheet为divide,第一个sheet为minus

"D:\Program Files\Python37\python.exe" D:/pycharmProject/python_self_study/classes/demo_11_excel.py
<openpyxl.workbook.workbook.Workbook object at 0x0420D790>
[<Worksheet "divide">, <Worksheet "minus">]
<Worksheet "divide">
<Worksheet "minus">Process finished with exit code 0

3.3.2 通过名字获取sheet

# 通过名字获取sheet
wb = load_workbook("original_data.xlsx")
sheet1 = wb["divide"]
print(sheet1)
sheet2 = wb["minus"]
print(sheet2)

我们拿到workbook对象以后,直接通过在后面加[sheetname]的方式获取所要的sheet。打印结果如下

"D:\Program Files\Python37\python.exe" D:/pycharmProject/python_self_study/classes/demo_11_excel.py
<Worksheet "divide">
<Worksheet "minus">Process finished with exit code 0

3.3.3 通过active获取当前选中的sheet

# 通过active获取当前选中的sheet
wb = load_workbook("original_data.xlsx")
sheet = wb.active
print(sheet)

workbook的active属性拿到的是当前被选择的sheet。查看打印如下

"D:\Program Files\Python37\python.exe" D:/pycharmProject/python_self_study/classes/demo_11_excel.py
<Worksheet "divide">Process finished with exit code 0

3.3.4 创建sheet

wb.create_sheet("mysheet")

我们拿到了workbook对象wb后,调用create_sheet()方法,就能在相对应的excel中创建一个sheet,执行完上面的语句后,我们打开excel,可以看见mysheet,如下图:

3.4 行和列

sheet中的行和列很好理解,这里我们要掌握的是,最大行和最大列,表示的是一个sheet中有数据的行数和列数。
所以我们调用sheet的max_row属性和max_column属性就可以拿到相对的值,代码如下:

3.5 单元格cell

单元格中主要是三个元素,行,列和值。我们可以通过固定的行号和列号获取单元格中的值,也可以通过行号和列号修改单元格内的数据。
3.5.1 获取某一单元格的值
这里我们假设获取第一行第一列的值,其实就是获取到sheet里的1A单元格的值,也就是case_id。
3.5.2 设置某一单元格的值
设置某一单元格的值就是要设置行号、列号和值,如下图所示:
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy83MDc4MDExLWY2ZTk4N2RhYzIyMDdiODEucG5n

4.Excel操作进阶

学习了上面openpyxl中对excel的基础知识,其实我们对于数据的读取、写入都可以进行了,接下来,我们就对Excel操作进行简单的封装,代码如下:

class ExcelManual:def __init__(self, file_path):self.file_path = file_pathself.wb = load_workbook(file_path)self.live_sheet = Nonedef select_sheet(self, name):"""选择表单:param name: 表单名称:return:"""self.live_sheet = self.wb[name]return self.live_sheetdef read_cell_value(self, row, column):"""读取一个单元格的数据内容:param row: 行:param column: 列:return:"""if isinstance(self.live_sheet, Worksheet):return self.live_sheet.cell(row, column).valuedef write_value_in_cell(self, row, column, value):"""往单元格中写入数据:param row:行:param column:列:param value:值:return:"""self.live_sheet.cell(row, column, value)def read_row_value(self, row_num):"""读取一行的数据功能:return:"""if isinstance(self.live_sheet, Worksheet):max_row = self.live_sheet.max_rowif row_num > max_row:print("行数超过表单中的最大行数")returnmax_column = self.live_sheet.max_columndata_list = []for i in range(max_column):data_list.append(self.live_sheet.cell(row_num, i + 1).value)return data_listdef read_value_by_sheet(self, sheet_name):"""获取表单中的所有数据:param sheet_name::return:"""current_sheet = self.wb[sheet_name]if isinstance(current_sheet, Worksheet):return list(current_sheet.values)def close(self):"""操作完一定要保存关闭才有效"""self.wb.save(self.file_path)self.wb.close()

对于Excel操作的封装其实很灵活,根据自己的需求去封装不同的操作。好啦,今天就学习到这里啦!
打完收工。

Python之openpyxl处理excel数据相关推荐

  1. python使用openpyxl处理excel表格数据

    python使用openpyxl处理excel表格数据 前言 一.安装openpyxl包 二.读取excel数据 1. 获取excel表格的页码 2. 获取excel表格某一行的数据 3. 获取exc ...

  2. Python使用openpyxl读写excel文件

    Python使用openpyxl读写excel文件 Python使用openpyxl读取excel文件中数据 Python使用openpyxl往excel文件中写入数据 Python使用openpyx ...

  3. python导入excel数据-Python导入数值型Excel数据并生成矩阵操作

    riginal_Data 因为程序是为了实现对纯数值型Excel文档进行导入并生成矩阵,因此有必要对第五列文本值进行删除处理. Import_Data import numpy as np impor ...

  4. python处理大量excel数据-python如何批量处理excel数据?

    python如何批量处理excel数据? python批量处理excel数据的方法: excel的内容需要有规律,python才能按顺序读取出来. 比如按行按列读取. 一.安装xlrd模块 到pyth ...

  5. python将excel数据合并_Python语言之Python合并多个Excel数据

    本文主要向大家介绍了Python语言之Python合并多个Excel数据,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 安装模块 1.找到对应的模块 http://www.pyt ...

  6. python的xlrd读取Excel数据失败: raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+‘; not supported‘) ...

    python的xlrd读取Excel数据失败: raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported') xlr ...

  7. python用openpyxl向excel中添加数据(文字,数据,图片等)

    利用openpyxl向excel内添加数据 excel也是利用openpyxl生成的, 并且命名为当前电脑系统时间 import os import openpyxl as op# 创建excel并返 ...

  8. 【Python基础】python使用openpyxl操作excel

    1.openpyxl库介绍 openpyxl最好用的python操作excel表格库,不接受反驳: openpyxl官网链接:openpyxl官网 openpyxl只支持[.xlsx / .xlsm ...

  9. Python编程练习-求excel数据的余弦相似度

    余弦相似度 余弦相似度是一种计算相关性的方法,它是将个体的指标数据映射到向量空间,计算两个向量之间的夹角余弦值作为两个变量之间的相似性度量. 两个向量m和n之间的余弦相似度计算公式为: c o s α ...

最新文章

  1. 机器学习在稀疏标注数据内部审计中的应用
  2. 设计模式:选择排序(select sorting)
  3. java和C++的区别
  4. QT vs下x64编译变win32编译报错:C:\Users\ycy\AppData\Local\QtMsBuild\qtrcc.targets(69,5): error MSB3073:
  5. Java大数据处理的流行框架
  6. 如何用google ads赚钱
  7. 瀑布流方式三(方式二的升级版)
  8. 经典中的品味:第二章 C++基本的对象,类型和值(上)
  9. 《电子元器件的可靠性》——3.4节失效分布类型的检验
  10. 图片 + 未知宽高 + 垂直居中
  11. python发音1001python发音-Python学习笔记Day3 - Python运算符
  12. 怎么回滚版本_Win 10 暂停更新及回滚方法
  13. yolo标注文件转换工具,python做的
  14. 详解vue原理之观察模式Dep->Watcher
  15. 几款强力压缩打包软件
  16. 如何系统地学习网络安全
  17. 某高人整理的Java就业面试题大全【1】
  18. 共享栈的简单实现(C语言)
  19. Java虚拟机学习与总结(二)
  20. 小学四则运算练习软件软件需求说明

热门文章

  1. 计算机毕业设计django基于python租房系统-房屋租赁系统
  2. 智能车基础学习电池与电机
  3. 计算机网络学习24:虚拟专用网VPN与网络地址转换NAT
  4. 沈阳房价还要涨的七个理由
  5. php 安装 bzip2,Linux_Linux系统中安装使用Bzip2来压缩文件的方法讲解,安装 Bzip2命令如下:复制代码 - phpStudy...
  6. 威胁猎人控诉极验侵权:以客户名义购买后化身二道贩子
  7. 我说CMMI 2.0 之 估算
  8. RTSP向ZLM流媒体服务器的推流和拉流鉴权
  9. c++语法出过错的点
  10. C#中实现多态的三种方式:抽象类,虚方法,接口