支持两种学生名单
This commit is contained in:
+20
-7
@@ -1,5 +1,5 @@
|
||||
import random
|
||||
from typing import Optional, Tuple
|
||||
from typing import Optional, Tuple, NoReturn
|
||||
|
||||
from openpyxl.reader.excel import load_workbook
|
||||
|
||||
@@ -60,12 +60,20 @@ class Student:
|
||||
return self.__str__()
|
||||
|
||||
@staticmethod
|
||||
def load_from_xls(path: str) -> list['Student']:
|
||||
def load_from_xls(path: str) -> list['Student'] | NoReturn:
|
||||
wb = load_workbook(path, read_only=True)
|
||||
ws = wb.active
|
||||
students = []
|
||||
for row in ws.iter_rows(min_row=6, max_col=5, values_only=True):
|
||||
students.append(Student(*row))
|
||||
|
||||
if ws.title == 'Sheet1':
|
||||
for row in ws.iter_rows(min_row=6, max_col=5, values_only=True):
|
||||
students.append(Student(*row))
|
||||
elif ws.title == '初始录入':
|
||||
for row in ws.iter_rows(min_row=13, max_col=5, values_only=True):
|
||||
students.append(Student(*row))
|
||||
else:
|
||||
raise Exception("无法解析学生名单")
|
||||
|
||||
wb.close()
|
||||
return [x for x in students if x.valid]
|
||||
|
||||
@@ -114,12 +122,17 @@ class Course:
|
||||
return self.__str__()
|
||||
|
||||
@staticmethod
|
||||
def load_from_xls(path: str) -> 'Course':
|
||||
def load_from_xls(path: str) -> 'Course' | NoReturn:
|
||||
wb = load_workbook(path, read_only=True)
|
||||
ws = wb.active
|
||||
name: str = ws['E3'].value
|
||||
if ws.title == 'Sheet1':
|
||||
name: str = ws['E3'].value[5:]
|
||||
elif ws.title == '初始录入':
|
||||
name: str = ws['D5'].value
|
||||
else:
|
||||
raise Exception("无法解析课程名")
|
||||
wb.close()
|
||||
return Course(name[5:])
|
||||
return Course(name)
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
|
||||
Reference in New Issue
Block a user