先埋个雷, 最近在做通过excel读取接口测试用例~

流程等都是自己制定的,打算做完了之后放到GitHub上去哈哈哈。


正式进入正题~

在写这个框架的时候,遇到了一个问题,就是同一个接口,需要为他准备很多组参数,那么我该在excel里怎么处理呢,本身是想另起一行,但是又觉得同样的内容过多,比如接口地址、name、id、headers等这些信息都肯定是一致的。那么我想到了,合并单元格!


但是新的问题又出现了,在我合并单元格以后,我逐行读取用例的时候,发现,被合并的单元格读取的结果是'',

这就很令人尴尬了。

但是不要紧

def merge_cell(sheet):
rt = {}
if sheet.merged_cells:
# exists merged cell
for item in sheet.merged_cells:
for row in range(item[0], item[1]):
for col in range(item[2], item[3]):
rt.update({(row, col): (item[0], item[2])})
return rt def get_merged(filename):
# 这里本应该做filepath的判断,但是我先省略了
book = xlrd.open_workbook(filename)
sheets = book.sheets() # 所有sheets
for index in range(len(sheets)):
sheet = book.sheet_by_index(index)
# 获取合并的单元格
merged = merge_cell(sheet)
# 获取sheet的行数(默认每一行就是一条用例)
rows = sheet.nrows
# 如果sheet为空,那么rows是0
if rows:
for row in range(rows):
data = sheet.row_values(row) # 单行数据
for index, content in enumerate(data):
if merged.get((row, index)):
# 这是合并后的单元格,需要重新取一次数据
data[index] = sheet.cell_value(*merged.get((row, index)))

这样每行的数据data, 就是正确的数据了!

xlrd里面有个merged_cells方法,可以获取到所有合并的单元格~



像如图的,G列2,3,4行都合并到了第2行,所以导致取3,4行数据的时候会取到"".

我这边的case_info是每一行的数据,用的row_values()方法取出的数据。

相当于做了1次更新,merge_cell方法是用来获取哪些单元格是被合并了的,并且找到他们合并到的那个单元格。(已知缺陷,第一行本身就能去到数据,我做了多余的更新。)

merged是调用merge_cell()方法后返回的1个dict,里面存放了key: 被合并的单元格地址, value: 合并到的单元格地址。

这样就解决了同一个接口, 多参数的问题~

关于xlrd处理合并单元格的更多相关文章

  1. python 利用三方的xlrd模块读取excel文件,处理合并单元格

      目的: python能使用xlrd模块实现对Excel数据的读取,且按照想要的输出形式.  总体思路: (1)要想实现对Excel数据的读取,需要用到第三方应用,直接应用. (2)实际操作时候和我 ...

  2. python-利用xlrd模块中读取有合并单元格的excel数据

    前言 对于excel中有合并单元格的情况,合并的单元格只能取到第一个单元格的值,合并的单元格后面的单元格内容的值为空,针对这个情况,写了下面一段代码实现, 对单元格进行判断,如果是传入的索引是合并单元 ...

  3. python-Excel读取-合并单元格读取

    python-Excel读取-合并单元格读取(后续会补充python-Excel写入的部分) 1. python读取Excel单元格 代码包含读取Excel中数据,以及出现横向合并单元格,以及竖向合并 ...

  4. C# 获取Excel中的合并单元格

    C# 获取Excel中的合并单元格 我们在制作表格时,有时经常需要合并及取消合并一些单元格.在取消合并单元格时需要逐个查找及取消,比较麻烦.这里分享一个简单的方法来识别Excel中的合并单元格,识别这 ...

  5. jquery操作表格 合并单元格

    jquery操作table,合并单元格,合并相同的行 合并的方法 $("#tableid").mergeCell({ cols:[X,X] ///参数为要合并的列}) /** * ...

  6. NPOI操作EXCEL(五)——含合并单元格复杂表头的EXCEL解析

    我们在第三篇文章中谈到了那些非常反人类的excel模板,博主为了养家糊口,也玩命做出了相应的解析方法... 我们先来看看第一类复杂表头: ...... 博主称这类excel模板为略复杂表头模板(蓝色部 ...

  7. poi获取合并单元格内的第一行第一列的值

    当读取如图所示的excel时,显示为第1行 第1列 的内容是:合并单元格 其它在合并单元格区域内的单元格不显示 示例代码如下: import java.io.FileInputStream; impo ...

  8. Repeater多列分别合并单元格

    GridView.Repeater合并单元格可以参考http://www.cnblogs.com/zhmore/archive/2009/04/22/1440979.html,但是原文例子是合并一列的 ...

  9. Aspose.Cells 首次使用,用到模版填充数据,合并单元格,换行

    Aspose.Cells 首次使用,用到模版填充数据,合并单元格,换行 模版格式,图格式是最简单的格式,但实际效果不是这种,实际效果图如图2 图2 ,注意看红色部分,一对一是正常的,但是有一对多的订单 ...

随机推荐

  1. 流API--流的迭代

    虽然流不是数据存储对象,但是仍然可以使用迭代器来遍历其元素,就如同使用迭代器遍历集合中的元素一样. 流API支持2类迭代器,一类是传统的Iterator,另一类是JDK8新增的Spliterator. ...

  2. UUID.randomUUID().toString()

    UUID.randomUUID().toString()是javaJDK提供的一个自动生成主键的方法.UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机 ...

  3. python 爬虫入门----案例爬取上海租房图片

    前言 对于一个net开发这爬虫真真的以前没有写过.这段时间学习python爬虫,今天周末无聊写了一段代码爬取上海租房图片,其实很简短就是利用爬虫的第三方库Requests与BeautifulSoup. ...

  4. java to kotlin (2) - lambda编程

    前言 Kotlin Note 是我学习kotlin整理笔记向博客,文章中的例子参考了kotlin in action这本书籍,同时我也极力推荐这本书,拥有Java基础的人可以很快的就使用kotlin来 ...

  5. HH的项链

    传送门 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此,他的项链变得越 ...

  6. JMeter基础教程1:若隐若现的参数化

    1. 什么是参数化? 在开始学习JMeter参数化之前,我们先了解下什么是参数化: 参数化是自动化测试脚本的一种常用技巧.简单来说,参数化的一般用法就是将脚本中的某些输入使用参数来代替,在脚本运行时指 ...

  7. 分析AJAX抓取今日头条的街拍美图并把信息存入mongodb中

    今天学习分析ajax 请求,现把学得记录, 把我们在今日头条搜索街拍美图的时候,今日头条会发起ajax请求去请求图片,所以我们在网页源码中不能找到图片的url,但是今日头条网页中有一个json 文件, ...

  8. xBIM 使用Linq 来优化查询

    目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...

  9. 【视频编解码·学习笔记】6. H.264码流分析工程创建

    一.准备工作: 新建一个VS工程SimpleH264Analyzer, 修改工程属性参数-> 输出目录:$(SolutionDir)bin\$(Configuration)\,工作目录:$(So ...

  10. 微信小程序页面跳转的问题(app.json中设置tarBar后wx.redirectTo和wx.navigateTo均不能实现跳转到指定的页面)

    1.设置的tabBar代码片段: "tabBar": { "list": [ { "pagePath": "pages/homep ...