在昨天的博文中介绍了普通单元格数据的获取,以及单元格数据类型的转换,详细见博文:自动化不知如何参数化(一)?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. optim.py-使用tensorflow实现一般优化算法

    optim.py Project URL:https://github.com/Codsir/optim.git Based on: tensorflow, numpy, copy, inspect ...

  2. Linux安装docker笔记

    更新yum操作 yum -y update 安装docker yum install -y docker 或者yum install -y docker-engine 启动docker  servic ...

  3. vue全家桶(4.3)

    5.3.Vuex的核心概念 store: 每一个 Vuex 应用的核心就是 store(仓库)."store"基本上就是一个容器,它包含着你的应用中大部分的状态 (state) s ...

  4. webpack模块打包简易版

    webpack基本使用流程(react) 1.安装webpack脚手架 cnpm install webpack webpack-cli -D 2.安装处理css的loader cnpm instal ...

  5. 查看笔记本SN序列号

    https://www.pstips.net/getting-computer-serial-number.html $ComputerName = $env:COMPUTERNAME $serial ...

  6. [开源]eCharts配置简化包OptionCreator[typescript版]

    eCharts存在问题 配置eCharts的option,对于大部分的开发者来说,复杂情况下是一件繁琐的事情.为什么繁琐,大致有以下这些原因 大小写敏感:在没有IDE的智能提示下,很容易写错,而且即使 ...

  7. 给大家分享一下less的使用几个技巧

    1.层级关系 让这个box范围内的全部包进来,这样的话就完美的进行调节,再也不用到处找第几行第几个,我刚才在哪个位置给覆盖了.一看便知! .box{ width: %; height: 300px; ...

  8. 【Linux】CentOS7 常用命令集合

    CentOS7 常用命令集合 常用命令 文件与目录 操作命令解析 cd /home 进入 ‘/home’ 目录cd .. 返回上一级目录cd ../.. 返回上两级目录cd - 返回上次所在目录cp ...

  9. Linux终端音乐播放器cmus攻略: 操作歌单

    目录 1. 安装 2. 操作说明 2.1. *PlayList歌单 2.2. 其他 3. 视图切换 4. 使响应Media/play按键 4.1. 编译安装 cmus是一款开源的终端音乐播放器.它小巧 ...

  10. es6 模块与commonJS的区别

    在刚接触模块化开发的阶段,我总是容易将export.import.require等语法给弄混,今天索性记个笔记,将ES6 模块知识点理清楚 未接触ES6 模块时,模块开发方案常见的有CommonJS. ...