python对Excel数据运用的几种库

本文介绍了在Python中使用openpyxl和xlrd库遍历及提取Excel数据的方法。通过示例展示了如何读取.xlsx和.xls文件,并提供了不同方式的遍历Excel脚本,包括按需配置的工作表和元素定位表达式。
摘要由CSDN通过智能技术生成

在python中,我们搭建接口自动化框架里面离不开数据的遍历和调用,这时候我们要用到python强大的库,来获取和调用我们存放在Excel中的数据

首先第一种库:openpyxl 的调用,注意:openpyxl 库只能读取.xlsx文件格式的数据
方法一:

from openpyxl import load_workbook
class Http_Excel_Tow:
    def __init__(self, file_name, sheet_name):
        self.file_name = file_name
        self.sheet_name = sheet_name
        self.sheet_obj = load_workbook(self.file_name)[self.sheet_name]  # 获取文件对象
        self.max_row = self.sheet_obj.max_row  # 获取最大行

    def do_real(self, i, j):
        return self.sheet_obj.cell(i, j).value  # 获取文件(行,列)的参数化

if __name__ == '__main__':
    res = Http_Excel_Tow('test_api.xlsx', 'python').do_real(1, 4)  #打开test_api.xlsx文件,获取其中第一行第四列的数据
    print(res)

#方法一的调用 在另外执行我们测试用例的py文件中
from class_demo_login_topup.http_excel_2 import Http_Excel_Tow

res = Http_Excel_Tow('test_api.xlsx', 'python')  # 引用实例
suite = unittest.TestSuite()

for i in range(1, res.max_row+1):# 遍历我们最大行+1 遍历 1 2 3 4行的数据
    suite.addTest(Login_Http('test_api', res.do_real(i, 1), eval(res.do_real(i, 2)), res.do_real(i, 3),str(res.do_real(i, 4)))) 
 # 执行我们自己写的测试Login_Http类中test_api方法,数据调用do_real方法,实现四行四列数据的遍历,其中:eval()是在EXCEL读取的是字符串,所以要还原之前的字典类型,str()这列在EXCEL读取中是数字,要改成字符串,前面加str()转化一下

方法二:

from openpyxl import load_workbook

class HttpExcel:
    def __init__(self, excel_name, sheet_name):
        self.excel_name = excel_name
        self.sheet_name = sheet_name

    def real_excel(self):  # real_excel(self, mode='all'):
        mode = FileConfig().config('do_config', 'MODE', 'mode')  # 遍历 1 3 登录和充值两条用例
        wb = load_workbook(self.excel_name)
        sheet = wb[self.sheet_name]
        test_data = []
        for i in range(1, sheet.max_row + 1):  # 遍历 1 2 3 4 sheet.max_row EXCEL中的最大行
            sub_test = {
   }
            sub_test['mode'] = sheet.cell(i, 1).value
            sub_test['url'] = sheet.cell(i, 2).value
            sub_test['data'] = sheet.cell(i, 3).value
            sub_test['method'] = sheet.cell(i, 4).value
            sub_test['expected'] = sheet.cell(i, 5).value
            test_data.append(sub_test)
        if mode == 'all':
            final_data = test_data
        else:
            final_data = []
            for item in test_data:
                if item['mode'] in eval(mode):
                    final_data.append(item)
        return final_data
    def write_back(self, i, value):  # 把测试结果写入到EXCEL文件中 I 行数 V 结果值保存
       	wb = openpyxl.load_workbook(self.file_name)
       	sheet = wb[self.sheet_name]
       	sheet.cell(i, 7).value = value
       	wb.save(self.file_name)


if __name__ == '__main__':
    res = HttpExcel('test_api.xlsx', 'python').real_excel()
    print(res)



#方法二的调用 在另外执行我们测试用例的py文件中
test_data = HttpExcel('test_api.xlsx', 'python').real_excel()
for item in test_data:
    suite.addTest(Login_Http('test_api', item['url'], eval(item['data']), item['method'], str(item['expected'])))

其实我们最后实现的 test_data  数据就是这样的:
[{
   'url':'xx','data':{
   'xx'},'method':'xx','expected':'xx'},
{
   'url':'xx','data':{
   'xx'},'method':'xx','expected':'xx'},
{
   'url':'xx','data':{
   'xx'},'method':'xx','expected':'xx'},
{
   'url':'xx','data':{
   'xx'},'method':'xx','expected':'xx'}]

openpyxl 库提取的位置(1,1),对应的是蓝色框的一列:openpyxl没有定位(0,0)
在这里插入图片描述

openpyxl 库提取的位置(1,2),对应的是蓝色框的一列:
在这里插入图片描述

openpyxl 库提取的位置(2,1),对应的是蓝色框的一列:
在这里插入图片描述
openpyxl 库提取的位置(2,2),对应的是蓝色框的一列:
在这里插入图片描述

第二种库:xlrd 这种库 就只支持.xls文件,写成类 参考第一种情况

import xlrd


table = xlrd.open_workbook('test.xls')
Sheet = table.sheet_by_name('python')
print(Sheet.cell(1, 1).value)
print(Sheet.row_values(1))  # 获取第一行的全部数据

一、
下面是示例:excel内容在文章中register内容一致: 但是配置文件读取的mode很有区别:
ReadExcel类的配置文件config的内容是:
[MODE]
test_1=[1,3]


import xlrd
from config.class_config import ReadFile


class ReadExcel():

    def __init__(self, excel_name, sheet_name):
        self.excel_name = excel_name
        self.sheet_name = sheet_name

    def read_excel_value(self, i, j):
        table = xlrd.open_workbook(self.excel_name)  # 获取文件对象
        # nrows = table.sheet_by_name(self.sheet_name).nrows  # 获取最大行数
        sheet = table.sheet_by_name(self.sheet_name)  # 定位表单
        return sheet.cell(i, j).value  # 获取文件(行,列)的参数化

    def read_excel(self):
        mode = ReadFile().read('../data/data.config', 'MODE', 'test_1')  # 遍历充值 1 3 两条用例
        table = xlrd.open_workbook(self.excel_name)
        sheet = tabl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值