代码中用到openpyxl读取数据,但是呢每次打开了excel就报错,项目重新解压重新打开项目,不打开excel的情况下就能读取数据,具体的原因就不知道了,求帮助,困扰了一段时间了,CSDN也找不到答案
class Case(object):
def init(self, attrs):
for item in attrs:
# print(item)
setattr(self, item[0], item[1])
class ReadExcel(object):
def __init__(self, file_path, sheet_name):
self.file_path = file_path
self.sheet_name = sheet_name
def open(self):
self.wb = openpyxl.load_workbook(self.file_path)
self.sheet = self.wb[self.sheet_name]
def close(self):
self.wb.close()
# 按行读取数据
def read_line_data(self):
# 打开工作簿
self.open()
# 按行读取数据并转换成列表
rows_data = list(self.sheet.rows)
#print(rows_data)
# 获取表单的表头信息
titles = []
for title in rows_data[0]:
# 对title是否为空进行过滤
if title.value:
titles.append(title.value)
#print(titles)
# 定义一个列表 用来存储所有用例
cases = []
# 从第二行开始到最后 都是用例数据
for case in rows_data[1:]:
# data用来存储每行的用例数据
data = []
for cell in case:
data.append(cell.value)
#print(data)
# 将titles与data组装
case_data = zip(titles, data)
#print(case_data)
# 创建一个Case类的对象 用例设置属性
case_obj = Case(case_data)
# print(case_obj.case_id, case_obj.title)
cases.append(case_obj)
# 关闭工作簿 返回所有的用例数据
self.close()
return cases
def write_data(self, row, column, value):
# 打开工作簿
self.open()
# 指定位置写入数据
self.sheet.cell(row=row, column=column, value=value)
# 保存数据
self.wb.save(self.file_path)
# 关闭工作簿
self.close()
if name == ‘main’:
from common.constant import DATA_DIR
file_path = os.path.join(DATA_DIR, ‘api_automation_course.xlsx’)
# print(file_path)
sheet_name = ‘login’
read = ReadExcel(file_path, sheet_name)
cases = read.read_line_data()
for case in cases:
print(case.case_id, case.title, case.url)
print(cases)
完整代码在这
我用windows11 python3.10.2 excel2021的copy你的代码执行没有问题
打开了excel也能执行
还有我把这里改成__init__
代码没问题的话,那就是公司电脑做了加密限制了,谢谢
其实我印象中,之前好像也是不行的,有可能是版本不同引起