Python自动化学习笔记(六)Excel操作

Excel操作基础

openpyxl:.xlsx读写操作
操作:

  • 工作薄(Workbook)
  • 表单(Sheet)
  • 单元格(Cell)
  1. 准备测试数据
  2. load_workbook模块,去打开测试数据文件,生成WorkBook对象(wb)
  3. 根据表单名称选择表单(sh) = wb[‘表单名称’]
  4. 在表单当中,获取单元格的数据:
    4.1 单元格对象:sh.cell(row,collum) #下标从1开始
    4.2 .value获取单元格的值
    4.3 修改数据:sh.cell(row,colum).value=新的值
  5. 得到当前表单当中,总行数和总列数
    sh.max_row(总行数)
    sh.max_colum(总列数)
  6. 保存数据(保存整个工作薄)
    WorkBook文件(wb).save(‘文件路径’)
    保存到原文件时,一定不要占用excel,否则权限拒绝
#1.加载excel数据文件
from openpyxl import load_workbook
wb = load_workbook('./login_cases.xlsx')

#2.根据表单名称选择表单:wb['表单名称']
sh = wb['Sheet1']
print(sh)

#3.单元格对象:sh.cell(row,colum) 下标从1开始
cel = sh.cell(2,2)
print(cel.value)

print(sh.max_row)
print(sh.max_column)

读取数据:

sh.rows = 所有行的数据,
方法一:

#1.拿到字典的key值
titles = []
for item in list(sh.rows)[0]:#遍历第一行当中的每一列
    titles.append(item.value)
    
data_lists = []
#2.吧key和value组合在一起,形成一个字典,再将字典放在列表中
for item in list(sh.rows)[1:]:#遍历每一行的
    value_dict = {}#每一行是个字典
    print(item)
    for index in range(len(item)):#获取每一行的单元格
        print(index,item[index],item[index].value)
        value_dict[titles[index]] = item[index].value
        data_lists.append(value_dict)#将每一行的测试数据追加到列表中
print(data_lists)

**方法二:**通过zip,eval关键字

#1.拿到字典的key值
titles = []
for item in list(sh.rows)[0]:#遍历第一行当中的每一列
    titles.append(item.value)
data_lists = []

#2.吧key和value组合在一起,形成一个字典,再将字典放在列表中
all_datas = []

for item in list(sh.rows)[1:]:				#遍历数据行
    vaules = []
    for val in item:						#获取每一行的值
        vaules.append(val.value)			
    res = dict(zip(titles,vaules))			#title和每一行数据,打包成字典
	res['check'] = eval(res['check'])		#将check的字符串,转换为字典对象。
    all_datas.append(res)					#追加
    
print(all_datas)

总结

'''
1.excle操作:openpyxl模块
    WorkBook
    Sheet
    Cell

    测试数据文件,提前准备好,
    wb = load_workbook(file_path)
    # 表单
    sh = wb['表单名称']
    # 获取表单当中所有的数据 -按行获取
    sh.rows =》 list(sh.rows)
    每一行是个元组,元组里的成员是cell对象。

    all_case = [] #存放所有读取出来的测试数据
    
    #遍历行,获取每一行当中,所有列的数据。
    每一行数据,储存在字典当中国。一行代码一个测试用例数据
    key:value
    key:遍历第一行
    for cel in list(sh.rows)[0]:
        titles.append(cel.value)
    从第二行开始,每一行是一个测试用例数据。
    先遍历行,再遍历列
    for row in list(sh.rows)[1:]:
        for cel in row:
            values.append(cel.value)
        case_data = dict(zip(titles,values))
        #有一个key的值,要求是字典
        case_data['check'] = eval(case_data['check'])
        all_cases.append(case_date)


'''

Excle操作封装

handle_excel.py

'''
excel类,你的需求是实现什么?
1.读取表头
2.读取数据 --读取表头以外的所有数据。返回值:列表,成员是每一行数据

初始化工作:加载一个excel,打开一个表单
'''
from openpyxl import load_workbook
import os
class HandleExcle:

    def __init__(self,file_path,sheet_name):
        self.wb = load_workbook(file_path)
        self.sh = self.wb[sheet_name]

    def read_titles(self):
        titles = []
        for item in list(self.sh.rows)[0]:
            titles.append(item.value)
        return titles

    def read_all_datas(self):
        all_datas = []
        titles = self.read_titles()
        for item in list(self.sh.rows)[1:]:
            values = []
            for val in item:
                values.append(val.value)
            res = dict(zip(titles,values))      #打包成字典
            # res['check'] = eval(res['check'])   #将check的字符串转换为字典对象
            all_datas.append(res)
        return all_datas

    def close_file(self):
        self.wb.close()

        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值