
背景需求:
2024年9月第一学期给每个班级都做了一份“节假日是灰色”的点名册,广受好评——“这样很清楚,没有双休日,就不会像以前那样,很容易填错格子。”
【办公类-54-03】20240828班级点名册模版(双休国定假涂成灰色)2024学年第一学期_点名册全学期统计-优快云博客文章浏览阅读1.7k次,点赞24次,收藏4次。【办公类-54-03】20240828班级点名册模版(双休国定假涂成灰色)2024学年第一学期_点名册全学期统计
https://blog.youkuaiyun.com/reasonsummer/article/details/141687789?sharetype=blogdetail&sharerId=141687789&sharerefer=PC&sharesource=reasonsummer&spm=1011.2480.3001.8118

现在是2025年2月第二学期,我只需要从原来已经生成的第一学期的灰色点名册里提取上学期幼儿的名单。



但是有孩子转入转出,下学期的名单肯定不一样了。
(o(╥﹏╥)o,转出的人数多于转入的人数,孩子真的越来越少了),
所以我需要把每个年级做成一张EXCEL工作簿(内有一个年级的多个班级工作表)。包含学号、姓名、男女人数。
原理:
1、提取每个班级工作簿的第1个工作表的A4-B38的内容(学号和姓名,有空缺的)
2、提取L3、S3的数字(男女人数合计)

读取“00上学期做好的名单”里面所有文件夹里的xlsx,分别合并成三个工作簿

代码展示:
'''
提取上学期作过的点名册里的姓名,变成共享文档,更改插班转园生
星火讯飞、阿霞
20250210
'''
import os
import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import Alignment
# 设置文件夹路径
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\20250220开学点名册批量制作\00上学期做好的名单'
# title='01托小班'
# title='02中班'
title='03大班'
folder_path = path+fr'\{title}'
# 创建一个空列表来存储所有嵌套列表
all_data = []
# 创建一个字典来存储每个文件的数据
data_dict = {}
# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
if filename.endswith('.xlsx') or filename.endswith('.xls'):
# 构建完整的文件路径
file_path = os.path.join(folder_path, filename)
# 班级名称
print(filename[8:12])
# 读取Excel文件的第一张工作表(所有内容,表格形式)
df = pd.read_excel(file_path, sheet_name=0)
# print(df)
# 提取特定列的内容,这里假设'A'和'B'对应第3列和第4列
class_info = [filename[8:9]+'班', filename[9:12]+'班', '学号', '姓名']
# 提取姓名
data = df.iloc[3:37, 0:2].values.tolist() # AB列,实际是第5行开始,第4行开始到38行,一共34人
# 将提取的数据添加到总列表中(拆成单个)
for d in data:
for f in d:
if pd.isna(f): # 如果是‘nan'
class_info.append(' ')
else:
class_info.append(str(f))
# 提取男女
class_info.append('男')
# 提取第5行的数据(假设是男性数据),3行,12列
male_data = df.iloc[1, 11]
# print(male_data)
class_info.append(str(int(male_data)))
# # 提取第6行的数据(假设是女性数据)6行 14列
class_info.append('女')
female_data = df.iloc[1, 18]
# # 将提取的数据添加到总列表中
class_info.append(str(int(female_data)))
# 将当前文件的数据存储到字典中
data_dict[filename[8:12]] = class_info
print(class_info)
# 创建一个新的DataFrame来存储所有数据
columns = ['确认', ' ']
# 保存到新的Excel文件
# 假设 path, title, data_dict, columns 已经定义
output_path = path + fr'\{title}-点名册信息更新.xlsx'
with pd.ExcelWriter(output_path, engine='openpyxl') as writer:
for sheet_name, data in data_dict.items():
num_rows = len(data) // 2
new_df = pd.DataFrame([data[i:i+2] for i in range(0, len(data), 2)], columns=columns)
new_df.to_excel(writer, sheet_name=sheet_name, i