openpyxl介绍
"htmlcode">
pip install openpyxl
openpyxl基本概念
- WorkBook:工作簿对象
- Sheet:表单对象
- Cell:表格对象
openpyxl对excel进行操作
新建excel
import openpyxl # 创建一个工作簿 workbook = openpyxl.Workbook() # 创建一个表单 sheet = workbook.create_sheet('表单1') # 写入一个数据 sheet.cell(row=1, column=1, value="python") # 保存 workbook.save('test.xlsx')
"htmlcode">
import openpyxl # 打开工作簿 workbook = openpyxl.load_workbook('test.xlsx') # 获取表单 sheet = workbook['表单1'] # 读取指定的单元格数据 cell = sheet.cell(row=1, column=1).value print(cell)
"htmlcode">
C:\software\python\python.exe D:/learn/python24/python_base/test.py python Process finished with exit code 0
读取单个单元格
# 方式一:读取A6单元格的值 cell1 = sheet['A6'].value # 方式二:读取第3行,第4列单元格的值 cell2 = sheet.cell(row=3, column=4).value
读取多个单元格
# 方式一:读取A6单元格的值 cell1 = sheet['A6'].value # 方式二:读取第3行,第4列单元格的值 cell2 = sheet.cell(row=3, column=4).value
"htmlcode">
import openpyxl # 打开工作簿 wb = openpyxl.load_workbook('test.xlsx') # 获取表单 sh = wb['表单1'] # 读取指定的单元格数据 res1 = sh.cell(row=1, column=1).value print(res1) # 获取最大行数 print(sh.max_row) # 获取最大列数 print(sh.max_column) # 按列读取所有数据,每一列的单元格放入一个元组中 print(sh.columns) # 直接打印,打印结果是一个可迭代对象,我们可以转换成列表来查看 # 按行读取所有数据,每一行的单元格放入一个元组中 rows = sh.rows # print(list(rows)) # 转换成列表之后打印结果为具体的单元格,如下 # [(<Cell '表单1'.A1>, <Cell '表单1'.B1>, <Cell '表单1'.C1>, <Cell '表单1'.D1>, <Cell '表单1'.E1>, <Cell '表单1'.F1>, <Cell '表单1'.G1>), # (<Cell '表单1'.A2>, <Cell '表单1'.B2>, <Cell '表单1'.C2>, <Cell '表单1'.D2>, <Cell '表单1'.E2>, <Cell '表单1'.F2>, <Cell '表单1'.G2>), # (<Cell '表单1'.A3>, <Cell '表单1'.B3>, <Cell '表单1'.C3>, <Cell '表单1'.D3>, <Cell '表单1'.E3>, <Cell '表单1'.F3>, <Cell '表单1'.G3>)] # 我们可以通过for循环以及value来查看单元格的值 for row in list(rows): # 遍历每行数据 case = [] # 用于存放一行数据 for c in row: # 把每行的每个单元格的值取出来,存放到case里 case.append(c.value) print(case)
"htmlcode">
C:\software\python\python.exe D:/learn/python24/python_base/test.py case_id 3 7 <generator object Worksheet._cells_by_col at 0x0000012FEF90D8B8> ['case_id', 'interface', 'title', 'method', 'url', 'data', 'expected'] [1, 'login', '登录成功', 'post', '/member/login', '{"mobile_phone":"15692004245","pwd":"miki12345"}', "{'code': 0, 'msg': 'OK'}"] [2, 'login', '登录失败-手机号为空', 'post', '/member/login', '{"mobile_phone":"","pwd":"miki12345"}', "{'code': 2, 'msg': '手机号码为空'}"]
openpyxl封装
"htmlcode">
# read_excel.py import openpyxl class CasesData: """用于保存测试用例数据""" pass class ReadExcel: def __init__(self, file_name, sheet_name): self.file_name = file_name self.sheet_name = sheet_name def open(self): self.wb = openpyxl.load_workbook(self.file_name) self.sh = self.wb[self.sheet_name] def close(self): self.wb.close() def read_data(self): """按行读取数据,最后返回一个存储字典的列表""" self.open() rows = list(self.sh.rows) titles = [] for t in rows[0]: title = t.value titles.append(title) cases = [] for row in rows[1:]: case = [] for r in row: case.append(r.value) cases.append(dict(zip(titles, case))) # 通过zip聚合打包用例的标题和数据 self.close() return cases def read_data_obj(self): """按行读取数据,最后返回的是一个存储实例对象的列表""" self.open() rows = list(self.sh.rows) titles = [] for t in rows[0]: title = t.value titles.append(title) cases = [] for row in rows[1:]: case_obj = CasesData() # 创建一个对象用来保存该行用例数据 case = [] for r in row: case.append(r.value) case_info = dict(zip(titles, case)) for k, v in case_info.items(): setattr(case_obj, k, v) cases.append(case_obj) self.close() return cases def write_data(self, row, column, msg): self.open() self.sh.cell(row=row, column=column, value=msg) self.wb.save(self.file_name) self.close() if __name__ == '__main__': # 直接运行本文件时执行,下面是一个应用实例 # 需要读取excel时直接调用ReadExcel类 test = ReadExcel('cases.xlsx', 'login') res = test.read_data_obj() # 最后返回的是一个存储实例对象的列表 print(res[0].case_id) # 打印第1个用例的case_id print(res[3].title) # 打印第4个用例的title test2 = ReadExcel('cases.xlsx', 'login') res2 = test2.read_data() # 最后返回一个存储字典的列表 print(res2[0]['case_id']) # 打印第1个用例的case_id print(res2[3]['title']) # 打印第4个用例的title
以上就是python 使用openpyxl读取excel数据的详细内容,更多关于python openpyxl读取excel数据的资料请关注其它相关文章!
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月23日
2024年11月23日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]