Forráskód Böngészése

上传文件至 '换座位'

nonvioce 6 hónapja
szülő
commit
abf6635645
1 módosított fájl, 13 hozzáadás és 3 törlés
  1. 13 3
      换座位/generate_seating.py

+ 13 - 3
换座位/generate_seating.py

@@ -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}' 中没有找到任何学生,将生成空座位表。")