importopenpyxl, random
src = '座位表.xlsx'
dst = '座位表_调换版.xlsx'
# 1. 读取原表
wb = openpyxl.load_workbook(src)
ws = wb.active
# 2. 收集所有非空学生姓名
students = []
forrowinws.iter_rows(values_only=True):
students.extend([vforvinrowifvandstr(v).strip()])
# 3. 随机洗牌
random.shuffle(students)
# 4. 按原格式写回
idx = 0
forrow_idx, rowinenumerate(ws.iter_rows(), 1):
forcol_idx, cellinenumerate(row, 1):
ifcell.valueandstr(cell.value).strip(): # 原来有人的地方
cell.value = students[idx]
idx += 1
# 5. 保存
wb.save(dst)
print(f'已生成大随机调换文件:{dst}')