Python3 操作Excel
首先说明一下
在处理大文件时,openpyxl 的性能不如 xlrd,xlwt等。所以可以读取的时候使用xlrd,写的时候用openpyxl。
今天遇到一个使用场景:excel存放的是一条条用例,包含表头,需要将这些用例读取出来。单元格存放的有字典等类型。

实现见代码:
大体思路是,先获取表头作为列表1:list1。
然后再将后续各行数据获取:listn,使用dict(zip(list1,listn),组合成字典。
最后将字典存为List。
# FileName : Excel.py
# Author : Adil
# DateTime : 2017/12/10 13:08
# SoftWare : PyCharm import xlrd
import os
from openpyxl.reader.excel import load_workbook from Wm_Api import readConfig as RC Rc = RC.ReadConfig() class Excel(object):
'''定义一个excel类''' def __init__(self):
'初始化基本信息' self.path = Rc.path
self.excelPath = os.path.join(self.path,'caseData') def readExcel(self,excelName,SheetName):
'读取excel' self.excelName = os.path.join(self.excelPath,excelName) self.Rb = xlrd.open_workbook(self.excelName) self.Rs = self.Rb.sheet_by_name(SheetName) # 获取行数
rows = self.Rs.nrows
# 定义一个dict存放单条用例
# self.titleDict = dict.fromkeys(self.Rs.row_values(0))
# 取第一行的表头存为list。
self.titleList = self.Rs.row_values(0)
# 定义一个list 存放 所有用例
self.caseList = []
for r in range(1,rows):
rowValues = self.Rs.row_values(r)
# print(r)
# print(self.Rs.row_values(r))
# self.caseInfo = dict.fromkeys(self.Rs.row_values(0),self.Rs.row_values(r))
# print(self.caseInfo)
# 将列表组合成 字典 这是 将列表转换为字典的一个方法。
self.caseDict = dict(zip(self.titleList,rowValues))
# 下面是将字典转换为列表,
# print(list(self.caseDict))
# print(self.caseDict.values())
# print(self.caseDict)
# 将字典再拼接为列表。
self.caseList.append(self.caseDict)
# print(self.caseList)
# 返回caseList
return self.caseList if __name__ == '__main__': excel = Excel()
excel.readExcel('ApiInfo.xlsx','Login')
注意:这样读取的数据类型都是str。包括表中的字典。读取也是str.
如果直接拿这个字典来用的话,会报错,如下:
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
处理方法如下:
这里使用了特殊的函数 eval()
caseData = caseDict['CaseData']
caseRun = caseDict['CaseRun']
print(url1)
if caseRun == 'Y':
if method == 'Post':
print(caseDict['CaseName'])
print(caseData)
print(type(caseData))
caseData = eval(caseData)
print(type(caseData))
# 下面是上面三条打印的结果,看似一样,但是类型不一样。所以需要转为dict
# {'username': 'xzyc001', 'password': '111111'}
# < class 'str'>
#
# < class 'dict'>
下面插播一条eval的用法
原文地址:https://www.cnblogs.com/liu-shuai/p/6098246.html
eval
功能:将字符串str当成有效的表达式来求值并返回计算结果。
语法: eval(source[, globals[, locals]]) -> value
参数:
source:一个Python表达式或函数compile()返回的代码对象
globals:可选。必须是dictionary
locals:可选。任意map对象
实例展示:
可以把list,tuple,dict和string相互转化。
#################################################
字符串转换成列表
>>>a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
>>>type(a)
<type 'str'>
>>> b = eval(a)
>>> print b
[[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]
>>> type(b)
<type 'list'>
#################################################
字符串转换成字典
>>> a = "{1: 'a', 2: 'b'}"
>>> type(a)
<type 'str'>
>>> b = eval(a)
>>> print b
{1: 'a', 2: 'b'}
>>> type(b)
<type 'dict'>
#################################################
字符串转换成元组
>>> a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
>>> type(a)
<type 'str'>
>>> b = eval(a)
>>> print b
([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))
>>> type(b)
<type 'tuple'>
Python3 操作Excel的更多相关文章
- 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化
继上一篇[Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 对豆瓣图书Top250进行爬取以后,鉴于还有一些问题没有解决,所以进行了进一步的交流讨论,这期间得到了一只尼玛 ...
- python3 操作excel表
python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库可从这里下载https://pypi.python.org/pypi.下面分别记录py ...
- python3操作Excel openpyxl模块的使用
python 与excel 安装模块 本例子中使用的模块为: openpyxl 版本为2.4.8 安装方法请参看以前发表的文章(Python 的pip模块安装方法) Python处理Excel表格 使 ...
- python3操作Excel
1.安装openpyxl模块: 在cmd命令窗执行命令 pip install openpyxl 安装openpyxl模块 from openpyxl import load_workbook ...
- python3:操作excel文件
前提:自动化接口测试中,可以将用例放在excel中管理.结合实际情况讲解如何操作excel文件 1.安装xlrd:pip install xlrd 2.导入模块:import xlrd 3.打开Exc ...
- 【Python数据分析】Python3操作Excel-以豆瓣图书Top250为例
本文利用Python3爬虫抓取豆瓣图书Top250,并利用xlwt模块将其存储至excel文件,图片下载到相应目录.旨在进行更多的爬虫实践练习以及模块学习. 工具 1.Python 3.5 2.Bea ...
- Python操作excel表格
用Python操作Excel在工作中还是挺常用的,因为毕竟不懂Excel是一个用户庞大的数据管理软件 注:本篇代码在Python3环境下运行 首先导入两个模块xlrd和xlwt,xlrd用来读取Exc ...
- python 操作excel
操作excel安装的三种方式: 1.pip instaill xlwt #写excel pip instaill xlrd #读excel pip instaill xl ...
- Python openpyxl、pandas操作Excel方法简介与具体实例
本篇重点讲解windows系统下 Python3.5中第三方excel操作库-openpyxl: 其实Python第三方库有很多可以操作Excel,如:xlrd,xlwt,xlwings甚至注明的数据 ...
随机推荐
- 零基础Python爬虫实现(爬取最新电影排行)
提示:本学习来自Ehco前辈的文章, 经过实现得出的笔记. 目标网站 http://dianying.2345.com/top/ 网站结构 要爬的部分,在ul标签下(包括li标签), 大致来说迭代li ...
- shell if 语句
一.过程式 编程语言的代码执行顺序: a.顺序执行:逐条执行: b.选择执行: 代码有一个分支:条件满足时才会执行: 俩个或以上的分支:只会执行其中一个满足条件的分支: c.循环执行: 代码片段(循环 ...
- 在Linux系统上卸载playOnLinux
1.remove just the playonlinux package itself. sudo apt-get remove playonlinux 2.remove the playonlin ...
- topcoder srm 705 div1 -3
1.设有一个字母表$T$,对于一个单词$w$,若对于任意的$0\leq i< |w|-1$,满足$w_{i}$在$T$中的排名小于等于$w_{i+1}$在$T$中的排名,则称$s$在$T$中是合 ...
- freeswitch 获取app和api帮助
通过show显示帮助命令 输出xml格式:show calls as xml 输出json格式 列出所有:show codec 解释: codec - 列出所有编码 endpoint - 列出所有en ...
- fedora安装了phpmyadmin后, mariadb无法启动?
参考:http://www.linuxidc.com/Linux/2015-10/123945.htm where, which, when,等不但可以用在从句中, 而且可以用在 动词不定式中, 如: ...
- SpringBoot 整合使用dubbo
这里主要是按照teaey作者的spring-boot-starter-dubbo框架进行一些变化的使用 依赖包: <dependency> <groupId>com.aliba ...
- ssm项目中 数据库和资源的备份
备份 备份很重要 数据库的备份 mysqldump -u用户名 -p密码 所需要备份的数据库 > ~/backup/sql/o2o`date +%Y%m%d%H%M%S`.sql 资源的备份 t ...
- cumtoj 一起来选课
一起来选课 题目地址:http://192.168.173.163/JudgeOnline/problem.php?cid=1019&pid=7 题目 明泽私立大学有n门课程提供给大一的同学来 ...
- samtools can not find libbz2.so.1.0
Error: samtoolssamtools: error while loading shared libraries: libbz2.so.1.0: cannot open shared obj ...