#-*- 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类的更多相关文章

  1. python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)

    一.上传文件 上传一个图片 使用input type="file",来上传一个文件.注意:form表单必须添加属性enctype="multipart/form-data ...

  2. [转]用Python读写Excel文件

    [转]用Python读写Excel文件   转自:http://www.gocalf.com/blog/python-read-write-excel.html#xlrd-xlwt 虽然天天跟数据打交 ...

  3. python读写Excel文件的函数--使用xlrd/xlwt

    python中读取Excel的模块或者说工具有很多,如以下几种: Packages 文档下载 说明 openpyxl Download | Documentation | Bitbucket  The ...

  4. Python 读写 Excel(转)

    Python 读写 Excel 基本上, 这个网页已经说明一切了: http://pypi.python.org/pypi/xlrd 等有时间再把这个页面写漂亮,现在先记一些代码. 读Excel 先建 ...

  5. Python读写Excel文件和正则表达式

    Python 读写Excel文件 这里使用的是 xlwt 和 xlrd 这两个excel读写库. #_*_ coding:utf-8 _*_ #__author__='观海云不远' #__date__ ...

  6. Python读写EXCEL文件常用方法大全

    前言 python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式. 用xlrd和xlwt进行excel读写: 用openpyxl进行excel读写: 用pa ...

  7. Python: 读写Excel(openpyxl / win32com.client)

    项目周报汇报的时候要做数据汇总,总是要从不同的excel文件中去获取数据最后汇总到一个excel表里面,所以决定用python直接写个自动化脚本来自动执行. 用python来读写excel,目前找了2 ...

  8. 用 Python 读写 Excel 表格

    Python 可以读写 Excel 表格吗? 当然可以. Python 下有很多类库可以做到, openpyxl 就是其中的佼佼者. openpyxl 的设计非常漂亮 ,你一定会喜欢它!不信请往下看: ...

  9. 用Python读写Excel文件(转)

    原文:google.com/ncr 虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件.通常我都是把数据保存为以TA ...

随机推荐

  1. 使用Windows命令行启动关闭服务(net,sc用法)

    下面两个命令最好以管理员方式启动cmd窗口,否则出现权限问题. 1.net用于打开没有被禁用的服务, NET命令是功能强大的以命令行方式执行的工具. 它包含了管理网络环境.服务.用户.登陆大部分重要的 ...

  2. OVS-----CentOS7.2上安装OVS软件

    1.安装依赖包: yum -y install make gcc openssl-devel autoconf automake rpm-build redhat-rpm-config yum -y ...

  3. JAVA并行异步编程,线程池+FutureTask

    java 在JDK1.5中引入一个新的并发包java.util.concurrent 该包专门为java处理并发而书写. 在java中熟悉的使用多线程的方式为两种?继续Thread类,实现Runnal ...

  4. 论文笔记:Rich feature hierarchies for accurate object detection and semantic segmentation

    在上计算机视觉这门课的时候,老师曾经留过一个作业:识别一张 A4 纸上的手写数字.按照传统的做法,这种手写体或者验证码识别的项目,都是按照定位+分割+识别的套路.但凡上网搜一下,就能找到一堆识别的教程 ...

  5. 【VMware vSphere】vSphere Data Protection简介

    [前言] 还记得一月份左右的时候,万达这边的服务器突然宕机,导致所有的项目不得不停止不说,还损失掉了很多宝贵的数据.为了防止这种情况再次发生,所以近期研究了vSphere Data Protectio ...

  6. Linux Makefile 生成 *.d 依赖文件及 gcc -M -MF -MP 等相关选项说明【转】

    转自:https://blog.csdn.net/qq1452008/article/details/50855810 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog. ...

  7. HTTP协议06-报文首部

    HTTP报文格式 ​ HTTP协议的请求和响应报文中必定包含HTTP首部.首部内容为客户端和服务器分别处理请求和响应提供所需要的信息. 1)HTTP请求报文 在请求中,HTTP报文由方法.URI.HT ...

  8. latex中的希腊字母

    原文地址:http://blog.csdn.net/xxzhangx/article/details/52778539 希腊字母,我们从小学开始认识它,但对它的读音我依旧靠蒙(说蒙真的感觉好羞愧啊). ...

  9. 【51nod1847】 奇怪的数学题

    就当我是 A 了此题吧... 首先预备知识有点多(因为题目要处理的东西都挺毒瘤): 杜教筛运用(当然你可以用其他筛?) 第二类斯特林数相关定理 下降阶乘幂相关定理 min25 筛运用 好了可以关掉本题 ...

  10. Linux内核之内存管理

    Linux内核之内存管理 Linux利用的是分段+分页单元把逻辑地址转换为物理地址; RAM的某些部分永久地分配给内核, 并用来存放内核代码以及静态内核数据结构; RAM的其余部分称动态内存(dyna ...