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甚至注明的数据 ...
随机推荐
- Solr导入MySQL数据之dataimport-handler
Solr不借助手动JSolr编程情况下也可以将Mysql的数据导入到Solr中.实现方式是安装dataimport-Handler从关系数据库将数据导入到索引库. 1.向SolrCore中加入jar包 ...
- Tree Implementation with Python
Tree Implementation with Python List of List 代码如下: def binary_tree(val): return [val, [], []] def in ...
- ARM的栈指令(转)
ARM的指令系统中关于栈指令的内容比较容易引起迷惑,这是因为准确描述一个栈的特点需要两个参数: 栈地址的增长方向:ARM将向高地址增长的栈称为递增栈(Descendent Stack),将向低地址增长 ...
- [c/c++] programming之路(2)、kill QQ,弹出系统对话框,吃内存等
一.删除文件 二.盗取密码的原理 #include<stdlib.h> //杀掉QQ,然后提示网络故障,请重新登陆,弹出高仿界面,获取账号密码,然后打开QQ进行登录 void main() ...
- Windows Media Player添加播放插件
- Java Spring+Mysql+Mybatis 实现用户登录注册功能
前言: 最近在学习Java的编程,前辈让我写一个包含数据库和前端的用户登录功能,通过看博客等我先是写了一个最基础的servlet+jsp,再到后来开始用maven进行编程,最终的完成版是一个 Spri ...
- tomcat8.5之后版本,远程无法登录管理页面
转载自http://jingyan.baidu.com/article/1612d500b56fa1e20e1eeed2.html 服务器采用的是linux系统. 安装tomcat在服务器上后,客户端 ...
- 从0开始安装fedora23的笔记-- 以及使用fedora的常规问题-2
在shell中, 你是可以连续输入多个语句的, 中间用分号; 连接 也可以把这些多个语句放到一个函数中, 函数的话,便于多次引用. 而且 "封装" 为函数后, 可以用set查看到这 ...
- SpringBoot 整合携程Apollo配置管理中心
携程官网对apollo的使用讲解了很多种方式的使用,但是感觉一些细节还是没讲全,特别是eureka配置中心地址的配置 这里对springboot整合apollo说一下 >SpringBoot启动 ...
- POJ 2018 Best Cow Fences(二分最大区间平均数)题解
题意:给出长度>=f的最大连续区间平均数 思路:二分这个平均数,然后O(n)判断是否可行,再调整l,r.判断方法是,先求出每个数对这个平均数的贡献,再求出长度>=f的最大贡献的区间,如果这 ...