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 ...
随机推荐
- classpath和classpath*的区别
classpath 指的是自己项目里的编译后的class路径 classpath* 包含jar包里面的class路径
- android页面渲染速度提升的常用方法
参考文档:http://blog.csdn.net/vector_yi/article/details/24402101 当activity中用到的布局较多较为复杂时,页面渲染就会变得复杂,现汇总以下 ...
- 升级Jenkins版本
找到jenkins.war文件的安装目录 cd /usr/local/tomcat/tomcat1_jenkins/webapps/ 停止jenkins service tomcat_jenkins ...
- 设计模式C++学习笔记之四(Multition多例模式)
多例模式,这个在GOF的模式设计里没有提到,但在实际工作中确实会用到.更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com. 4.1.解释 main(),客户 略 说明: ...
- VC操作excel
http://www.cnblogs.com/witxjp/archive/2010/06/05/1752181.html 最近在做个数据库程序,因为有些数据用户要求导出到Excel文件显示(需要 ...
- vc++高级班之多线程篇[6]---线程间的同步机制①
①.线程同步的必要性: int g_Num = 0; UINT __cdecl ThreadProc(LPVOID lpParameter) { for (int idx = 0; idx &l ...
- hibernate框架学习之数据模型-POJO
Hibernate数据模型用于封装数据,开发时候需要遵从如下规范:1)提供公共无参的构造方法(可使用自动生成的)如果使用投影技术,一定要显式声明公共无参的构造方法2)提供一个标识属性,作为对象的主键, ...
- Media Query-响应式布局
做响应式网站的时候,一定要在页面头部加入如下的声明: <meta name="viewport" content="width=device-width, init ...
- MYSQL 查看最大连接数和修改最大连接数
MySQL查看最大连接数和修改最大连接数 1.查看最大连接数show variables like '%max_connections%';2.修改最大连接数set GLOBAL max_connec ...
- emoji错误:ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value:
1 前言 由于mysql数据库要存储微信昵称,但是当微信昵称带有emoj表情会出现标题的错误. 然后发现是emoj编码是4个字节保存的,于mysql数据库编码格式utf8默认保存的是1到3个字节. 2 ...