Python 读写excel类
#-*- coding: utf8 -*-
import xlrd
import xlwt
from Public import GlobalClass
def openexcel(path):
try:
data = xlrd.open_workbook(path)
return data
except Exception as e:
print (e)
#将测试结果写入一个Excel,传:保存路径,sheet名称,读取Excel时保存的Keys,要写入Excel的数据,行数,列数
def writeexcel(path,sheetname,keys,values,nrows,ncols):
Path = path
wb=xlwt.Workbook()
sheet=wb.add_sheet(sheetname)
Keys = keys
value = values
Len = len(value)
rows = nrows
cols = ncols
for k in range(0,cols):
sheet.write(0,k,Keys[k])
for i in range(0,Len): #由于第1行已经写入了表头,所以要从第2行开始写数据
for j in range(1,rows):
data = value[i]
for l in range(0,cols):
sheet.write(j,l,str(data[Keys[l]]))
wb.save(Path)
#将测试结果写入一个Excel(传入数组),传:保存路径,sheet名称,读取Excel时保存的Keys,执行统计时保存的SKeys,要写入Excel的数据,行数,列数
def writeexcellist(path,sheetnamelist,keys,skeys,valueslist,nrowslist,ncolslist):
Path = path
wb=xlwt.Workbook()
# print(sheetnamelist)
for s in range(len(sheetnamelist)):
sheet=wb.add_sheet(sheetnamelist[s])
Keys = keys
Skeys = skeys
value = valueslist[s]
rows = nrowslist[s]
cols = ncolslist[s]
if sheetnamelist[s] == "Result":
for k in range(0,cols):
sheet.write(0,k,Skeys[k])
for r in range(1,rows): #由于第1行已经写入了表头,所以要从第2行开始写数据
for c in range(0,cols):
sheet.write(r,c,str(value[r-1][Skeys[c]]))
else:
for k in range(0,cols):
sheet.write(0,k,Keys[k])
for r in range(1,rows): #由于第1行已经写入了表头,所以要从第2行开始写数据
for c in range(0,cols):
sheet.write(r,c,str(value[r-1][Keys[c]]))
wb.save(Path)
#获取sheet总行和总列
def GetRowAndCol(path,sheetname):
try:
data = openexcel(path)
table = data.sheet_by_name(sheetname)
nrows = table.nrows #行数
ncols = table.ncols #列数
list =[nrows,ncols]
except:
list = False
# list = (nrows,ncols)
# print(list)
return list
#根据用例状态获取sheet总行和总列
def GetRowByState(path,sheetname):
data = openexcel(path)
# print(sheetname)
table = data.sheet_by_name(sheetname)
nrows = table.nrows #行数
ncols = table.ncols #列数
srows = 1 #行数
# scols = 1 #列数
# list =[]
for rownum in range(1,nrows):
row = table.row_values(rownum) #获取某行数据
# print(row)
if row[8] == "Fail":
srows +=1
# scols +=1
# list = [srows,scols]
return srows
#根据用例等级获取sheet总行和总列
def GetRowByLevel(path,sheetname):
data = openexcel(path)
table = data.sheet_by_name(sheetname)
nrows = table.nrows #行数
ncols = table.ncols #列数
srows = 1 #行数
# scols = 1 #列数
levellist = GlobalClass.Level
for rownum in range(1,nrows):
row = table.row_values(rownum) #获取某行数据
# print(row)
if float(row[9]) in levellist:
srows +=1
# scols +=1
# list = [srows,scols]
# print(list)
return srows
#根据名称获取Excel表格中的数据
def exceltablebyname(path,sheetname):
data = openexcel(path)
table = data.sheet_by_name(sheetname)
nrows = table.nrows #行数
ncols = table.ncols
colnames = table.row_values(0) #某一行数据,0表示列名所有行的所引
list =[]
#把字典的Key存起来,后续通过这个Key按顺序读取
if not GlobalClass.keys:
for k in range(0,ncols):
GlobalClass.keys.append(colnames[k])
# print(GlobalClass.keys)
for rownum in range(1,nrows):
row = table.row_values(rownum)
# print(row)
if row:
app = {}
for i in range(ncols):
app[colnames[i]] = row[i]
list.append(app)
#按Key读取的方法
# for rownum in range(0,nrows-1):
# for i in range(ncols):
# data = list[rownum]
# print(data[keys[i]])
# print(keys)
# print(list)
return list
#根据用例状态为Fail获取Excel表格中的数据
def exceltablebystate(path,sheetname):
data = openexcel(path)
table = data.sheet_by_name(sheetname)
nrows = table.nrows #行数
ncols = table.ncols
colnames = table.row_values(0) #某一行数据,0表示列名所有行的所引
list =[]
#把字典的Key存起来,后续通过这个Key按顺序读取
if not GlobalClass.keys:
for k in range(0,ncols):
GlobalClass.keys.append(colnames[k])
# print(GlobalClass.keys)
for rownum in range(1,nrows):
row = table.row_values(rownum) #获取某行数据
# print(row)
if row[8] == "Fail":
if row:
app = {}
for i in range(ncols):
app[colnames[i]] = row[i]
list.append(app)
#按Key读取的方法
# for rownum in range(0,nrows-1):
# for i in range(ncols):
# data = list[rownum]
# print(data[keys[i]])
# print(keys)
# print(list)
return list
#根据用例等级获取Excel表格中的数据
def exceltablebylevel(path,sheetname):
levellist = GlobalClass.Level
data = openexcel(path)
table = data.sheet_by_name(sheetname)
nrows = table.nrows #行数
ncols = table.ncols
colnames = table.row_values(0) #某一行数据,0表示列名所有行的所引
list =[]
#把字典的Key存起来,后续通过这个Key按顺序读取
if not GlobalClass.keys:
for k in range(0,ncols):
GlobalClass.keys.append(colnames[k])
# print(GlobalClass.keys)
for rownum in range(1,nrows):
row = table.row_values(rownum) #获取某行数据
# print(row)
if float(row[9]) in levellist:
if row:
app = {}
for i in range(ncols):
app[colnames[i]] = row[i]
list.append(app)
#按Key读取的方法
# for rownum in range(0,nrows-1):
# for i in range(ncols):
# data = list[rownum]
# print(data[keys[i]])
# print(keys)
# print(list)
return list
Python 读写excel类的更多相关文章
- python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)
一.上传文件 上传一个图片 使用input type="file",来上传一个文件.注意:form表单必须添加属性enctype="multipart/form-data ...
- [转]用Python读写Excel文件
[转]用Python读写Excel文件 转自:http://www.gocalf.com/blog/python-read-write-excel.html#xlrd-xlwt 虽然天天跟数据打交 ...
- python读写Excel文件的函数--使用xlrd/xlwt
python中读取Excel的模块或者说工具有很多,如以下几种: Packages 文档下载 说明 openpyxl Download | Documentation | Bitbucket The ...
- Python 读写 Excel(转)
Python 读写 Excel 基本上, 这个网页已经说明一切了: http://pypi.python.org/pypi/xlrd 等有时间再把这个页面写漂亮,现在先记一些代码. 读Excel 先建 ...
- Python读写Excel文件和正则表达式
Python 读写Excel文件 这里使用的是 xlwt 和 xlrd 这两个excel读写库. #_*_ coding:utf-8 _*_ #__author__='观海云不远' #__date__ ...
- Python读写EXCEL文件常用方法大全
前言 python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式. 用xlrd和xlwt进行excel读写: 用openpyxl进行excel读写: 用pa ...
- Python: 读写Excel(openpyxl / win32com.client)
项目周报汇报的时候要做数据汇总,总是要从不同的excel文件中去获取数据最后汇总到一个excel表里面,所以决定用python直接写个自动化脚本来自动执行. 用python来读写excel,目前找了2 ...
- 用 Python 读写 Excel 表格
Python 可以读写 Excel 表格吗? 当然可以. Python 下有很多类库可以做到, openpyxl 就是其中的佼佼者. openpyxl 的设计非常漂亮 ,你一定会喜欢它!不信请往下看: ...
- 用Python读写Excel文件(转)
原文:google.com/ncr 虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件.通常我都是把数据保存为以TA ...
随机推荐
- Django学习手册 - 初识django
初识: django简介: 开放源代码的web应用框架 由python语言编写的. 一.框架基本概念(核心): 以上这个图就是 django 的核心逻辑图,必须熟记.后续的所有编程都跟这个图的逻辑息息 ...
- nutz学习笔记(1)
写在前头 最近到了合肥分公司,分公司用的架构为nutz·····目前在根据官方文档(http://nutzam.com/core/nutz_preface.html)自学并实践中,此笔记将不会如官方文 ...
- js 一个对象的属性名是一个变量怎么处理?
1.这种方法的属性(setAttrName)可以是一个变量. var obj = {}; obj[setAttrName] = 'Tom' 2.这样就可以动态的给js对象添加变量属性. var obj ...
- WC2019 20天训练
Day -1 2019.1.2 初步计划: 0x60 图论 std 洛谷提高剩余练习 NOIP2018遗留题解 洛谷省选基础练习 数学: 1.数论 2.组合数学(练习:莫比乌斯反演) 3.概率(练习: ...
- 【转】Python之面向对象与类
[转]Python之面向对象与类 本节内容 面向对象的概念 类的封装 类的继承 类的多态 静态方法.类方法 和 属性方法 类的特殊成员方法 继承层级关系中子类的实例对象对属性的查找顺序问题 一.面向对 ...
- eMMC基础技术2:eMMC概述
0.前言 本文主要参考eMMC规范,从总体上对eMMC 进行简要介绍.主要包含如下的内容: (1)eMMC系统的总体架构 (2)eMMC的总线协议 (3)device controller (4)fl ...
- Windows PowerShell 入門(7)-関数編2
この連載では.Microsoftが提供している新しいシェル.Windows Power Shellの使い方を解説します.前回に引き続きPowerShellにおける関数の取り扱いとして.変数と関数のスコ ...
- mysql开启binlog日志和慢查询日志
1)首先,为什么要开启binlog日志和慢查询日志呢? binlog日志会记录下数据库的所以增删改操作,当不小心删除.清空数据,或数据库系统出错,这时候就可以使用binlog日志来还原数据库,简单来说 ...
- 解决:error LNK2026: 模块对于 SAFESEH 映像是不安全的
用vs2017编译比较老的vc++项目,出现这个错误,解决方案如下: 1.打开该项目的[属性]对话框, 2.点击[链接器]选项, 3.点击[命令行]选项, 4.将 [/SAFESEH:NO ]键入[其 ...
- backtrace和backtrace_symbols
一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的. 在glibc ...