python+selenium自动化测试-11excel文件的读写删改

excel可以用来作为测试数据存储文件。在用了写方法之后,python没有相应的Close()方法关闭excel并释放内存资源,遗留了一些坑,有时候会发现excel存储的数据和预期对不上。实际上,是有用于数据保存后释放内存的API的,release_resources(),不过太低调了,以至于忽略了它。

简单操作excel,xlrd可以实现excel的读取操作,xlwt则是写入excel操作,xlutils3主要是为了修改excel,简单理解可以拷贝已有excel进行修改,生成新的excel表格。删数据用win32com.client。下面介绍用excel读写删改数据的六种常用方法:

import xlrd #读取excel数据
from xlutils.copy import copy #copy副本,修改excel数据
import win32com.client as win32 #删除excel数据

1、获取第一列的数据

def get_excelFirstCol(self,excelName):
    try:
        #打开Excel
        workbook = xlrd.open_workbook('F:\\phomeNetFront\\test_data\\excel\\'+excelName)
        # 进入sheet
        excel_sheet = workbook.sheet_by_index(0)
        # 获取行数和列
        max_row = excel_sheet.nrows
        data=[]
        row_num = 0
        while row_num < max_row:
             # 将表中第一列的所有数据写入data数组中
            data.append(excel_sheet.cell(rowx=row_num,colx=0).value)
            row_num = row_num + 1
        print("data is: %r"%data)
        return data
    except BaseException as msg:
        print(msg)

2、获取列表中第一列的行数

def get_ExcelRow(self,excelName):
    try:
        # 打开Excel
        workbook = xlrd.open_workbook('F:\\phomeNetFront\\test_data\\excel\\' + excelName)
        # 进入sheet
        excel_sheet = workbook.sheet_by_index(0)
        # 获取行数
        max_row = excel_sheet.nrows
        print("getExcelRow's max_row is:%d"%max_row)
        return max_row
    except BaseException as msg:
        print(msg)

3、随机取得excel的行数和对应的文本值

def get_ranExcelText(self,excelName):
    try:
        # 打开Excel
        workbook = xlrd.open_workbook('F:\\phomeNetFront\\test_data\\excel\\' + excelName)
        # 进入sheet
        excel_sheet = workbook.sheet_by_index(0)
        # 获取行数
        max_row = excel_sheet.nrows
        print("get_ranExcelText maxrow is:%d"%max_row)
        ranRow=random.randint(1,max_row)-1
        print("ranRow is:%d"%ranRow)
        text=excel_sheet.cell(rowx=ranRow, colx=0).value
        print("get_ranExcelText is:%r"%text)
        return (ranRow,text)#返回的是一个元组tuple
    except BaseException as msg:
        print(msg)

4、将数据追加到excel表中

def append_excel(self,excelName,var):
    try:
        #打开Excel
        workbook = xlrd.open_workbook('F:\\phomeNetFront\\test_data\\excel\\'+excelName)

        # 进入sheet
        excel_sheet = workbook.sheet_by_index(0)
        max_row = excel_sheet.nrows

        new_workbook = copy(workbook)  # 将xlrd对象拷贝转化为xlwt对象
        new_worksheet = new_workbook.get_sheet(0)  # 获取转化后工作簿中的第一个表格
        new_worksheet.write(max_row, 0, var)  # 追加写入数据
        new_workbook.save('F:\\phomeNetFront\\test_data\\excel\\'+excelName)  #保存工作簿
        print("xls格式表格追加数据成功!")
        workbook.release_resources()#释放内存,关闭模板文件,win32不能使用该函数
    except BaseException as msg:
        print(msg)

5、修改excel最后一行的数据

def mod_excel(self,excelName,var):
    try:
        # 打开Excel
        workbook = xlrd.open_workbook('F:\\phomeNetFront\\test_data\\excel\\' + excelName)

        # 进入sheet
        excel_sheet = workbook.sheet_by_index(0)
        max_row = excel_sheet.nrows

        new_workbook = copy(workbook)  # 将xlrd对象拷贝转化为xlwt对象
        new_worksheet = new_workbook.get_sheet(0)  # 获取转化后工作簿中的第一个表格
        new_worksheet.write(max_row-1, 0, var)  # 修改数据
        new_workbook.save('F:\\phomeNetFront\\test_data\\excel\\' + excelName)  # 保存工作簿
        workbook.release_resources()
        print("xls格式表格修改数据成功!")
    except BaseException as msg:
        print(msg)

6、删除列表中匹配的数据

#注意:使用自动化测试时,不能在桌面打开wps及相关格式文档,否则可能会无法正确执行删除。
def del_excel(self,excelName,row):
    try:
        # 打开Excel
        workApp = win32.Dispatch('Excel.Application')
        workbook=workApp.Workbooks.Open('F:\\phomeNetFront\\test_data\\excel\\' + excelName)
        sht = workbook.Worksheets("Sheet1")
        sht.Rows(row).Delete()
        workbook.Save()
        workbook.Close(SaveChanges=0)
     except BaseException as msg:
        print(msg)
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值