实例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')
派位完毕后截图
编码输出结果
