在昨天的博文中介绍了普通单元格数据的获取,以及单元格数据类型的转换,详细见博文:自动化不知如何参数化(一)?xlrd来帮你解决

昨天的那篇博文中,还有个获取合并单元格数据的问题没解决,今天就专门来讲一讲这个合并单元格数据的获取。

合并单元格概念

xlrd中提供了一个获取合并单元格的命令,如下:

meger_cell = sheet_object.merged_cells

我们通过这行命令,运行下,看下是个什么内容,打印结果如下所示:

从结果可以看出,这是一组坐标,但代表的是什么含义呢?我们结合excel数据内容来看,如下图所示:

这样来看的话,是不是就要清晰很多了。注意一下:xlrd库中,所有的坐标,都是从0开始的,同数组下标一样,接下来的博文内容中,都会讲到坐标,所以在这里统一注意下。

可能有博友又有疑问了,合并单元格中的4个坐标代表的什么意思?不着急,马上就讲解。

比如坐标(1,4,0,1),我们把坐标看作为(行起始位,行结束位,列起始位,列结束位)。再来对应查看,坐标1代表的就是第二行;坐标4代表的就是第五行;坐标0代表是第一列;坐标1代表的是第二列。

结合上述描述,博友们是不是很清楚了。细心的博友应该已经发现了一个规律,那就是:起始位的坐标是包含关系,而结束位的坐标是不包含的关系。所以,坐标(1,4,0,1)实际取的数据就是,第二行到第四行和第一列合并的数据。这就刚好与【搜索测试】合并单元格相匹配了。我相信,现在博友们已经明白合并单元格的坐标概念了。是不是很简单,也就那么回事,是吧。

代码实践

获取合并单元格数据

我们将上述分析的逻辑,转换成代码,如下所示:

row_index = 2
col_index = 6
for(rlow, rhight, clow, chight) in meger_cell:
if(row_index >= rlow and row_index < rhight):
if(col_index >= clow and col_index < chight):
cell_value = sheet_object.cell_value(rlow, clow)
print(cell_value)

上述代码,就是将(行起始位,行结束位,列起始位,列结束位)进行了一个比较,并获取数据,执行代码,结果展示如下:

读取合并&单个单元格数据

如上所示代码,有个缺陷,只能读取合并单元格的数据,可用性还是不高,那如何能做到既能读取合并单元格数据,又能读取到单个单元格数据呢。我们来看代码,如下所示:

def get_meger_cell_value(row_index, col_index):
cell_value = None
for(rlow, rhight, clow, chight) in meger_cell:
if(row_index >= rlow and row_index < rhight):
if(col_index >= clow and col_index < chight):
cell_value = sheet_object.cell_value(rlow, clow)
break
else:
cell_value = sheet_object.cell_value(row_index, col_index)
else:
cell_value = sheet_object.cell_value(row_index, col_index)
return cell_value print(get_meger_cell_value(0, 0))

如果博友们不懂获取数据逻辑,打个断点,调试代码即可,如下所示:

这样来看,是不是就很清楚了。上述代码,既能获取合并单元格的数据,又能获取单个单元格的数据。

以上就是解决获取合并单元格数据的方法了,希望对博友们有用。

自动化不知如何参数化(二)?xlrd来帮你解决的更多相关文章

  1. 自动化不知如何参数化?xlrd来帮你解决

    平时在做自动化测试的时候,一直都是要求数据与业务逻辑分离.把测试数据都写在业务里面的话,比较混杂.为了方便管理测试数据,所以引入了python的一个扩展库--xlrd.该库使用简单,能满足自动化测试的 ...

  2. Selenium Web 自动化 - 项目实战(二)

    Selenium Web 自动化 - 项目实战(二) 2016-08-08 什么是数据驱动?简答的理解就是测试数据决定了测试结果,这就是所谓数据驱动.数据驱动包含了数据,他就是测试数据,在自动化领域里 ...

  3. Ansible批量自动化管理工具(二)

    Ansible批量自动化管理工具(二) 链接:https://pan.baidu.com/s/1A3Iq3gGkGS27L_Gt37_I0g 提取码:ncy2 复制这段内容后打开百度网盘手机App,操 ...

  4. Zookeeper 到底能帮我们解决哪些问题?

    Zookeeper 从设计模式角度来看,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通 ...

  5. [转] Win10插入U盘后双击无法打开,无法访问,显示设备未就绪;驱动哥帮你解决

    说起U盘,相信大家都不陌生. 这个不起眼的小东西在我们日常生活息息相关,一旦损坏可能就会造成一些不必要的麻烦. 最近驱动哥就收到了一大批用户关于U盘问题的相关咨询,一起来看看到底是什么情况吧! 据其中 ...

  6. 聊聊用Selenium做自动化碰到了哪些坑?都是怎么解决的?

    本周我们的讨论话题是关于Selenium自动化: 话题:聊聊用Selenium做自动化碰到了哪些坑?都是怎么解决的? 话题描述:Selenium是大家做UI自动化用到的主流框架,在平时写脚本的过程中, ...

  7. Selenium2+python自动化20-Excel数据参数化【转载】

    前言 问: Python 获取到Excel一列值后怎么用selenium录制的脚本中参数化,比如对登录用户名和密码如何做参数化? 答:可以使用xlrd读取Excel的内容进行参数化.当然为了便于各位小 ...

  8. Selenium2+python自动化20-Excel数据参数化

    前言 问: Python 获取到Excel一列值后怎么用selenium录制的脚本中参数化,比如对登录用户名和密码如何做参数化? 答:可以使用xlrd读取Excel的内容进行参数化.当然为了便于各位小 ...

  9. Selenium2+python自动化21-TXT数据参数化

    前言      在17篇我们讲了excel数据的参数化,有人问了txt数据的参数化该怎么办呢,下面小编为你带你txt数据参数化的讲解 一.以百度搜索为例,自动搜索五次不同的关键字.输入的数据不同从而引 ...

随机推荐

  1. nginx web服务器概念了解 配置

    服务器 服务器 服务器是一种提供高效计算的机器,与普通的PC主机相比,具有可观的稳定性,高并发性,可扩展性. 互联网任何一个应用都是以服务器为基础设施的,没有服务器我们就无法访问网络上的任何内容,只能 ...

  2. Python之浅谈多态和封装

    目录 组合 什么是组合 为什么使用组合 多态和多态性 多态 什么是多态? 多态性 好处 多态性 什么是多态性 封装 封装是什么意思? 隐藏 如何用代码实现隐藏 python 实际上是可以访问隐藏属性的 ...

  3. 洛谷 P2648 赚钱

    这道题其实就是求最长路顺便再判断一下正环而已. 这种题肯定要用SPFA的啦,有又正边权(因为最长路所以正边就相当于负边),又是正环(同理,相当于负环),SPFA专治这种问题. 当一个点入队多次的时候, ...

  4. Windows7 PowerShell 2.0升级到 PowerShell 5.1

    Windows7 sp1内置的PowerShell的版本是v2.0,现需要将其升级到v5.1,过程中有一个环节需要引起注意,为了以后查阅的方便,现将其记录下来. 1 查看PowerShell版本 Wi ...

  5. springboot Jar包开启远程调试

    jar 正常启动 java -jar rest-demo-0.0.1-SNAPSHOT.jar 开启DEBUG模式需追加参数 java -Xdebug -Xrunjdwp:server=y,trans ...

  6. 点分治模板 POJ 1741

    #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const ...

  7. mongodb--创建用户权限

    最近在部署MongoDB Replica Set,马上就到生产环境了,一想还没有给数据库设置用户权限,配置的这一路踩了好多坑,希望对大家有帮助 1. 配置好mongodb replica set 安装 ...

  8. 华为云MVP熊保松谈物联网开发:华为云IoT是首选,小熊派是神器

    摘要:在AI.5G的技术驱动下,物联网行业的发展愈加如火如荼,开发者在技术的快速更迭间,也得乘风破浪跟上新技术的节奏. 在AI.5G的技术驱动下,物联网行业的发展愈加如火如荼,开发者在技术的快速更迭间 ...

  9. 手写一个React-Redux,玩转React的Context API

    上一篇文章我们手写了一个Redux,但是单纯的Redux只是一个状态机,是没有UI呈现的,所以一般我们使用的时候都会配合一个UI库,比如在React中使用Redux就会用到React-Redux这个库 ...

  10. Linux多任务编程之七:Linux守护进程及其基础实验(转)

    来源:CSDN  作者:王文松  转自Linux公社 ------------------------------------------------------------------------- ...