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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_24601279/article/details/102655534

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 #修改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、删除列表中匹配的数据

    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('F:\\phomeNetFront\\test_data\\excel\\' + excelName)
        except BaseException as msg:
            print(msg)

猜你喜欢

转载自blog.csdn.net/qq_24601279/article/details/102655534
今日推荐