注:因openpyxl返回的多为生成器,不方便解析,以下代码将返回为
list
xlsx文档如下:

代码如下
"""
FileName : parseTestCase.py
Author : tenking
Date : 2018-07-28
Describe :
"""
import os
import openpyxl
# 获取当前路径
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
file_dir = os.path.join(BASE_DIR, 'files')
xlsx_path = os.path.join(file_dir, 'testcase.xlsx')
# 载入xlsx文档
wb = openpyxl.load_workbook(xlsx_path, data_only=True)
# 获取文档所有的sheet名称,返回为list
sheets = wb.sheetnames
# 选择工作页
worksheet = wb[sheets[1]]
# 最大行数
max_row = worksheet.max_row
# 最大列数
max_column = worksheet.max_column
all_list = []
temp_list = []
title_list = []
def get_column_values():
# 迭代获取工作页title
for cell in list(worksheet.rows)[1]:
title_list.append(cell.value)
# 迭代获取所有的testcase
for i in range(1, max_column + 1):
for cell in list(worksheet.rows)[i + 1]:
if cell.value is not None:
temp_list.append(cell.value)
# 获取title数量
max_len = len(title_list)
# 迭代将title和testcase聚合为字典,再将每一列添加到all_list中
for i in range(max_row):
row_dict = dict(zip(title_list, temp_list[0: max_len]))
if row_dict != {}:
all_list.append(list(row_dict.values()))
del temp_list[0: max_len]
return all_list
print(get_column_values())
# out:~
[['testcase_001', 'Medium', '测试打开百度网址', '网络OK', 'testData', '1、打开浏览器\n2、在地址栏中输入网址“http://www.baidu.com”,按Enter键', '1、成功打开网址\n2、页面title为“百度一下,你就知道”'],
['testcase_002', 'Medium', '测试打开必应网址', '网络OK', 'testData', '1、打开浏览器\n2、在地址栏中输入网址“http://cn.bing.com”,按Enter键', '1、成功打开网址\n2、页面title为“必应中国”']]
网友评论