实例14—电脑派位分班的python实现

场景:

每到开学的时候,新生报名,特别是一年级,七年级都会进行电脑派位操作,能不能不用第三方软件,直接python处理excel文件实现呢?当然可以并且可以自动化,一次性完成任务。

1、用到的知识点:

Python的for循环、python处理excel的openpyxl模块:wb对象基本操作包括打开,ws的批量插入并且初始化,ws表格操作遍历读取等。

2、操作步骤思维导图:

3、用到的文件及核心思想:

新生网络模拟报名表(批量生成的模拟练习数据)分享网址:

https://www.aliyundrive.com/s/5mEKpfhtHuz

核心思想一图胜千言

核心思想

何须劳烦第三方、新生派位分班python也能

4、代码操作编写截图:

give your the code:

from openpyxl import load_workbook,Workbook from openpyxl.styles import Alignment import random #打开数据excel表 wb = load_workbook('all.xlsx') ws = wb.active # 批量初始化各班级表格 for i in range(1,11): wb.create_sheet(f'{i}班',i-1) # 创建与变量i相关的工作表 ws_tmp = wb[f'{i}班'] # 获取临时的工作表 ws_tmp.merge_cells('A1:D1') # 合并标题行 ws_tmp['A1'] = f'一年级{i}班花名册' # 写入标题 ws_tmp['A1'].alignment = Alignment(horizontal='center',vertical='center') title = ('姓名','性别','住址','班级') ws_tmp.append(title) # 写入表头 # 遍历读取数据 for i in range(3,ws.max_row+1): name = ws.cell(i,2).value # 读取姓名 sex = ws.cell(i,3).value address = ws.cell(i,4).value rand_num = random.randint(1,10) # 分配随机数 classroom = f'{rand_num}班' # 班级 stu = (name,sex,address,classroom) # 构造学生数据结构 for sheetname in wb.sheetnames: # 遍历找到与随机数匹配的工作表 if str(rand_num) == sheetname[:-1]: # 判断随机数是否和工作表的数字部分想等 wb[sheetname].append(stu) # 插入所在工作表 wb.save('all_over.xlsx')

派位完毕后截图

编码输出结果