python接口自动化(三十七)-封装与调用--读取excel 数据(详解)
<h2>简介</h2><p> 在进行软件接口测试或设计自动化测试框架时,一个不比可避免的过程就是: 参数化,在利用python进行自动化测试开发时,通常会使用excel来做数据管理,利用xlrd、xlwt开源包来读写excel。例如:当我们登录的账号有多个的时候,我们一般用</p>
<p>excel 存放测试数据,本篇文章介绍,python 读取excel 方法,并保存为字典格式。</p>
<h2>官网</h2>
<p> 通过官网来查看如何使用python读取Excel,python excel官网: http://www.python-excel.org/,</p>
<p>1、以下是翻译后的官网文档:</p>
<p><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520100216229-654332433.png" alt=""></p>
<p>2、点击“文档”</p>
<p><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520101235338-1741101075.png" alt=""></p>
<p> </p>
<p>3、点击“安装说明”</p>
<p> <img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520101341406-591577215.png" alt=""></p>
<p>4、根据以上安装说明,进行准备</p>
<p><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520101128682-1547343429.png" alt=""></p>
<h2>环境准备</h2>
<p>1、以下是小编环境是:</p>
<p>操作系统:win10</p>
<p><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520100750779-682148014.png" alt=""></p>
<p> </p>
<p>python环境:python3.7</p>
<p> <img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520100827606-641939549.png" alt=""></p>
<p>2、根据官方文档先安装 xlrd 模块,打开 cmd,输入 pip install xlrd 在线安装</p>
<p><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520101716394-1200765055.png" alt=""></p>
<p>3、出现红色圈的内容表示xlrd安装成功</p>
<p> <img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520101526671-146997712.png" alt=""></p>
<h2> python对Excel的基本操作</h2>
<p>1、打开电子表格文件以进行数据提取,官方文档API</p>
<p><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520104040097-1372698205.png" alt=""></p>
<p> 2、通过工作表索引、名称获取内容</p>
<p><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520115206531-1538743374.png" alt=""></p>
<p>3、实例1</p>
<p>(1)Excel内容</p>
<p><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520114847460-1403913047.png" alt=""></p>
<p>(2)代码实现</p>
<p><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520115325724-1081420078.png" alt=""></p>
<p>(3)运行结果</p>
<p><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520115410974-1958472211.png" alt=""></p>
<p>(4)参考代码1</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> # coding=utf-<span style="color: rgba(128, 0, 128, 1)">8</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> # <span style="color: rgba(128, 0, 128, 1)">1</span>.先设置编码,utf-<span style="color: rgba(0, 0, 0, 1)">8可支持中英文,如上,一般放在第一行
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span> # <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">.注释:包括记录创建时间,创建人,项目名称。
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(128, 0, 0, 1)">'''
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> Created on <span style="color: rgba(128, 0, 128, 1)">2019</span>-<span style="color: rgba(128, 0, 128, 1)">5</span>-<span style="color: rgba(128, 0, 128, 1)">20</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> @author: 北京-<span style="color: rgba(0, 0, 0, 1)">宏哥
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)">Project:学习和使用python读取Excel
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(128, 0, 0, 1)">'''
</span><span style="color: rgba(0, 128, 128, 1)">10</span> # <span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">.导入模块
</span><span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)">import xlrd
</span><span style="color: rgba(0, 128, 128, 1)">12</span>
<span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 255, 1)">if</span> __name__ == <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">__main__</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">:
</span><span style="color: rgba(0, 128, 128, 1)">14</span>
<span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)"> # excel文件全路径
</span><span style="color: rgba(0, 128, 128, 1)">16</span> xlPath = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">C:\\Users\\DELL\\Desktop\\test.xlsx</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">17</span> <span style="color: rgba(0, 0, 0, 1)"> # 用于读取excel
</span><span style="color: rgba(0, 128, 128, 1)">18</span> xlBook =<span style="color: rgba(0, 0, 0, 1)"> xlrd.open_workbook(xlPath)
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)"> # 获取excel工作簿数
</span><span style="color: rgba(0, 128, 128, 1)">20</span> count =<span style="color: rgba(0, 0, 0, 1)"> len(xlBook.sheets())
</span><span style="color: rgba(0, 128, 128, 1)">21</span> print(u<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">工作簿数为:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, count)
</span><span style="color: rgba(0, 128, 128, 1)">22</span> <span style="color: rgba(0, 0, 0, 1)"> # 获取 表 数据的行列数
</span><span style="color: rgba(0, 128, 128, 1)">23</span> table = xlBook.sheets()[<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">]
</span><span style="color: rgba(0, 128, 128, 1)">24</span> nrows =<span style="color: rgba(0, 0, 0, 1)"> table.nrows
</span><span style="color: rgba(0, 128, 128, 1)">25</span> ncols =<span style="color: rgba(0, 0, 0, 1)"> table.ncols
</span><span style="color: rgba(0, 128, 128, 1)">26</span> print(u<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">表数据行列为(%d, %d)</span><span style="color: rgba(128, 0, 0, 1)">"</span> %<span style="color: rgba(0, 0, 0, 1)"> (nrows, ncols))
</span><span style="color: rgba(0, 128, 128, 1)">27</span> <span style="color: rgba(0, 0, 0, 1)"> # 循环读取数据
</span><span style="color: rgba(0, 128, 128, 1)">28</span> <span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span> range(<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">, nrows):
</span><span style="color: rgba(0, 128, 128, 1)">29</span> rowValues =<span style="color: rgba(0, 0, 0, 1)"> table.row_values(i)# 按行读取数据
</span><span style="color: rgba(0, 128, 128, 1)">30</span> <span style="color: rgba(0, 0, 0, 1)"> # 输出读取的数据
</span><span style="color: rgba(0, 128, 128, 1)">31</span> <span style="color: rgba(0, 0, 255, 1)">for</span> data <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> rowValues:
</span><span style="color: rgba(0, 128, 128, 1)">32</span> print(data, <span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,)
</span><span style="color: rgba(0, 128, 128, 1)">33</span> print(<span style="color: rgba(128, 0, 0, 1)">""</span>)</pre>
</div>
<p>4、参考代码2</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> # coding=utf-<span style="color: rgba(128, 0, 128, 1)">8</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> # <span style="color: rgba(128, 0, 128, 1)">1</span>.先设置编码,utf-<span style="color: rgba(0, 0, 0, 1)">8可支持中英文,如上,一般放在第一行
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span> # <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">.注释:包括记录创建时间,创建人,项目名称。
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(128, 0, 0, 1)">'''
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> Created on <span style="color: rgba(128, 0, 128, 1)">2019</span>-<span style="color: rgba(128, 0, 128, 1)">5</span>-<span style="color: rgba(128, 0, 128, 1)">20</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> @author: 北京-<span style="color: rgba(0, 0, 0, 1)">宏哥
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)">Project:学习和使用python读取Excel
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(128, 0, 0, 1)">'''
</span><span style="color: rgba(0, 128, 128, 1)">10</span> # <span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">.导入模块
</span><span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)">import xlrd
</span><span style="color: rgba(0, 128, 128, 1)">12</span>
<span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 255, 1)">if</span> __name__ == <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">__main__</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">:
</span><span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)"> # 打开 exlce 表格,参数是文件路径
</span><span style="color: rgba(0, 128, 128, 1)">15</span> data = xlrd.open_workbook(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">C:\\Users\\DELL\\Desktop\\test.xlsx</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">16</span> # table = data.sheets()[<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">] # 通过索引顺序获取
</span><span style="color: rgba(0, 128, 128, 1)">17</span> # table = data.sheet_by_index(<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">) # 通过索引顺序获取
</span><span style="color: rgba(0, 128, 128, 1)">18</span> table = data.sheet_by_name(u<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Sheet1</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)# 通过名称获取
</span><span style="color: rgba(0, 128, 128, 1)">19</span> nrows =<span style="color: rgba(0, 0, 0, 1)"> table.nrows# 获取总行数
</span><span style="color: rgba(0, 128, 128, 1)">20</span> ncols =<span style="color: rgba(0, 0, 0, 1)"> table.ncols# 获取总列数
</span><span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 0, 1)"> # 获取一行或一列的值,参数是第几行
</span><span style="color: rgba(0, 128, 128, 1)">22</span> print(table.row_values(<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)) # 获取第一行值
</span><span style="color: rgba(0, 128, 128, 1)">23</span> print(table.col_values(<span style="color: rgba(128, 0, 128, 1)">0</span>)) # 获取第一列值</pre>
</div>
<p>5、以上代码运行结果</p>
<p><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520131225877-1308365306.png" alt=""></p>
<h2>Excel存放数据(参数)</h2>
<p>1、在 excel 中存放数据,第一行为标题,也就是对应字典里面的 key 值,如登录的参数:username,password<br><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520131844228-1459931335.png" alt=""></p>
<h2>封装读取参数或者数据方法</h2>
<p>1、最终读取的数据是多个字典的 list 类型数据,第一行数据就是字典里的 key 值,从第二行开始一一对应 value 值</p>
<p>2、封装好的代码如下:</p>
<p><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520145620750-1184782622.png" alt=""></p>
<p>3、运行结果</p>
<p><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520145648605-1397316611.png" alt=""></p>
<h2>小结</h2>
<p>1、在安装xlrd模块的时候后边,还有一些黄色的警告,小伙伴们不需要的担心,翻译看一下,是需要更新pip</p>
<p><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520110017114-824605163.png" alt=""></p>
<p> 2、将提示的命令选中后,回车,另起一行粘贴,运行即可将pip更新到最新版本</p>
<p><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520110228385-1871871858.png" alt=""></p>
<p> 3、小伙伴们可能发现在运行结果的显示:只有出现数字就会有个.0,解决办法:</p>
<p> 如果 excel 数据中有纯数字的一定要右键》设置单元格格式》文本格式,要不然读取的数据是浮点数(先设置单元格格式后编辑,编辑成功左上角有个小三角图标)<br><br><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520150229108-1392186232.png" alt=""></p>
<p> 修改单元格式,运行代码结果:可以清楚看到.0没有了</p>
<p><img src="https://img2018.cnblogs.com/blog/1232840/201905/1232840-20190520150333063-1584747590.png" alt=""></p>
<p> 4、好了关于python读取Excel的内容,就先讲解到这个,有兴趣可以看其官方文档对表格进行合并、样式设置等等系列动作!!!</p>
</div>
<div id="MySignature" role="contentinfo">
<div id="MySignature" style="display: block">
<div style="font-size: 13px; border: 1px dashed rgb(45, 161, 45); padding: 10px 15px; background-color: rgb(248, 248, 248)">
<label style="font-weight: bold">
为了方便大家在移动端也能看到我分享的博文,现已注册个人微信公众号,扫描左下方二维码即可,欢迎大家关注,提前解锁更多测试干货!有时间会及时分享相关技术博文。
</label>
<br>
<label style="font-weight: bold">
为了方便大家互动讨论相关技术问题,刚刚建立了咱们的专门的微信群交流互动群,群内会分享交流测试领域前沿知识。请您扫描中间的微信二维码进群
</label>
<br>
<label style="font-weight: bold">
为了方便大家互动讨论相关技术问题,现已组建专门的微信群,由于微信群满100,请您扫描右下方宏哥个人微信二维码拉你进群
<label style="font-weight: bold; color: red; font-size: 15px">
(请务必备注:已关注公众号进群)平时上班忙(和你一样),所以加好友不及时,请稍安勿躁~
</label>
,欢迎大家加入这个大家庭,我们一起畅游知识的海洋。
</label>
<br>
感谢您花时间阅读此篇文章,如果您觉得这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让博主能喝上一杯咖啡,在此谢过了!
<br>
如果您觉得阅读本文对您有帮助,请点一下左下角
“推荐”
按钮,您的
<label style="font-weight: bold; color: red; font-size: 15px">
“推荐”
</label>
将是我最大的写作动力!另外您也可以选择
【
<strong>
关注我
</strong>
】
,可以很方便找到我!
<br>
本文版权归作者和博客园共有,来源网址:
https://www.cnblogs.com/du-hong
欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利!
</div>
<div style="text-align: center; margin-top: 10px">
<p style=" font-weight: bolder; color: red; ">
公众号(关注宏哥)     
        
       
       
微信群(扫码进群)    
       
       
    
      
      客服微信
</p>
<img style="width: 200px;padding-right: 50px;" alt="个人微信公众号" src="https://img2018.cnblogs.com/common/1741949/201911/1741949-20191119095948011-608816619.png">
<img style="width: 200px;padding-right: 65px;" alt="微信群" src="https://img2024.cnblogs.com/blog/1232840/202506/1232840-20250610113707419-637869921.png">
<img style="width: 200px" alt="个人微信" src="https://img2018.cnblogs.com/common/1741949/201911/1741949-20191106101257091-849954564.png">
</div>
</div><br><br>
来源:https://www.cnblogs.com/du-hong/p/10892379.html
頁:
[1]