|
|
@@ -56,6 +56,10 @@ def parse_args():
|
|
|
"--seed", type=int, default=None,
|
|
|
help="随机种子(用于 random 策略的可重复性)"
|
|
|
)
|
|
|
+ parser.add_argument(
|
|
|
+ "-S", "--sheet", type=str, default=None,
|
|
|
+ help="指定要读取的工作表名称(默认:第一个工作表)"
|
|
|
+ )
|
|
|
parser.add_argument(
|
|
|
"--usage", action="help",
|
|
|
help="显示帮助信息"
|
|
|
@@ -63,12 +67,18 @@ def parse_args():
|
|
|
return parser.parse_args()
|
|
|
|
|
|
|
|
|
-def read_students(filepath, class_name):
|
|
|
+def read_students(filepath, class_name, sheet_name=None):
|
|
|
"""从Excel读取学生数据,按班级筛选。自动查找表头行。"""
|
|
|
from openpyxl import load_workbook
|
|
|
|
|
|
wb = load_workbook(filepath, data_only=True)
|
|
|
- ws = wb.active
|
|
|
+ if sheet_name:
|
|
|
+ if sheet_name not in wb.sheetnames:
|
|
|
+ print(f"错误:工作表 '{sheet_name}' 不存在。可用工作表:{wb.sheetnames}")
|
|
|
+ sys.exit(1)
|
|
|
+ ws = wb[sheet_name]
|
|
|
+ else:
|
|
|
+ ws = wb[wb.sheetnames[0]]
|
|
|
|
|
|
required = ["班级", "姓名", "性别", "总分"]
|
|
|
indices = {}
|
|
|
@@ -351,7 +361,7 @@ def main():
|
|
|
|
|
|
# 读取学生(只读一次)
|
|
|
print(f"正在读取 {args.excel_file} ...")
|
|
|
- students = read_students(args.excel_file, args.class_name)
|
|
|
+ students = read_students(args.excel_file, args.class_name, args.sheet)
|
|
|
|
|
|
if not students:
|
|
|
print(f"警告:班级 '{args.class_name}' 中没有找到任何学生,将生成空座位表。")
|