当前位置: 首页 > news >正文

【办公类-90-02】】20250215大班周计划四类活动的写法(分散运动、户外游戏、个别化综合)(基础列表采用读取WORD表格单元格数据,非采用切片组合)

背景需求:

做了中班的四类活动安排表,我顺便给大班做一套

【办公类-90-01】】20250213中班周计划四类活动的写法(分散运动、户外游戏、个别化(美工室图书吧探索室))-CSDN博客文章浏览阅读874次,点赞10次,收藏11次。【办公类-90-01】】20250213中班周计划四类活动的写法(分散运动、户外游戏、个别化(美工室图书吧探索室)) https://blog.csdn.net/reasonsummer/article/details/145626428?sharetype=blogdetail&sharerId=145626428&sharerefer=PC&sharesource=reasonsummer&spm=1011.2480.3001.8118

编号

代码复制

总园中班大班的规则是差不多的

1,运动从一周五个项目变成了一个项目

2、游戏从一周五个项目变成了一个项目。

3、个别化—和中班不同,只要写一个项目,而不是美工、图书、探索

一、分散运动

和中班的运动设计思路一样,只是5周循环,改成7周循环。

但是它的场地不是按序递增,而是1475326.

但是它也是有规律的,第二行是从第一行的索引3开始提取

可以循环3次21周,49*3=147,但是实际20周20*5=140。

因此,我需要 在总表里遍历,直接删除B列单元格里面有“第21周”的一行内容。


'''
目的:2024年2月大班总部分散运动场地,每星期只有一条(各班滚动排)
大班是7个班,一个基础循环49天,循环3次21周,需要删除最后7天的内容
(一周一次,就不用考虑节假日了)
作者:阿夏、星火讯飞
时间:2024年2月15日15:30
'''import sys
import random
import xlrd
import xlwt
from openpyxl import load_workbook
import time
import os, shutil# 一共20周
w = 20
# 五周一循环
xz = 7
# 提取元素数量,140个
zc=w*xz# 循环次数,多一点
y = 3
print(y)print('---------第1步:把8个运动场地循环21次(105元素组成的列表)------')# 本学期:总园大班只有5个
gradenum = ['1','2', '3', '4', '5', '6','7']path = r"C:\Users\jg2yXRZ\OneDrive\桌面\202502 大班3类活动批量"
# 新建一个”装N份word和PDF“的文件夹sport = []
classroom = []
week = []# 这里是8个运动场地,因为后面有递进,所以把最后一个 ,放到01前面,这样摆放后面才会正确)
sportall = ['场地1(主要材料:平衡车、三轮车、自行车、木桥等)','场地4(主要材料:轮胎、跨栏、锣鼓、接力棒等)	','场地7(主要材料:轮胎、安全垫、麻绳等)	','场地5(主要材料:竹梯、三脚架、长凳、轮胎、安全垫等)	','场地3(主要材料:爬笼、树屋、沙漏、书包、铃铛等)	','场地2(主要材料:弹力棉球、吸盘球、飞镖盘等)	','场地6(主要材料:各类球、箩筐、百变迷宫架、马甲等)',
]
# sport=[1,2,3,4,5]
# 规律是,第一组12345,第二组23451 第三组34512 第三组45123,第五组51234
# ss = sportall * 20sp=[]
# 添加第1组
sp= sportall.copy()
print(sport)
# 添加第2-6组
for i in range(xz-1):  # 总共需要添加4次,因为已经有一个初始组sportall =sportall[3:] +sportall[:3]print(f"第{i + 1}次提取的元素: {sportall}")for x in sportall:sp.append(x)
print(len(sp))# 49次sport=[]
# # 手动复制3次
for x in range(y):    # 7周一循环,最少3次=21周for yy in sp:sport.append(yy)
# 提取前140个,正好20周,每周7个场次print("运用场地:", sport)
print("运动场地长度:", len(sport))
# 140classroom=[]for x in range(y):  # 4for i in range(len(gradenum)):for oo in range(xz):classroom.append(f'大{gradenum[i]}班')print(classroom)
print(len(classroom))
# 140
week=[]
for x in range(y):  # 4for o in range(xz):  # x=5         for l in range(x * xz + 1, x * xz + xz + 1):ww = f'第{l:02}周'week.append(ww)week= week
print(week)
print(len(week))# 制作表格
import openpyxl
from openpyxl import Workbook# 创建一个工作簿对象
wb = Workbook()
ws = wb.active
ws.title = "总表"# 在A1写入“班级”,B1写入“周次”,C1写入“运动场地”
ws['A1'] = '班级'
ws['B1'] = '周次'
ws['C1'] = '运动场地'# 从A2开始写入classroom,B2开始写入week,C2开始写入sport
for i in range(len(classroom)):ws[f'A{i + 2}'] = classroom[i]ws[f'B{i + 2}'] = week[i]ws[f'C{i + 2}'] = sport[i]# 将总表内容按照班级拆分到同一个工作簿的不同工作表大,标签为“班级+分散运动安排”
for grade in gradenum:ws_new = wb.create_sheet(title=f'大{grade}班分散运动安排')ws_new['A1'] = '班级'ws_new['B1'] = '周次'ws_new['C1'] = '运动场地'row = 2for i in range(len(classroom)):if classroom[i].startswith(f'大{grade}'):ws_new[f'A{row}'] = classroom[i]ws_new[f'B{row}'] = week[i]ws_new[f'C{row}'] = sport[i]row += 1# 保存到文件
output_file = path + r'\01 大班分散运动..xlsx'
wb.save(output_file)
print(f"Excel文件已保存到: {output_file}")# 删除最后一行“第21周”
# 重新打开保存的文件以进行进一步操作
wb = openpyxl.load_workbook(output_file)# 遍历所有工作表,删除最后一行
for sheet_name in wb.sheetnames:ws = wb[sheet_name]max_row = ws.max_rowif max_row > 1:  # 确保不是只有标题行的工作表# 逆序循环删除倒数几行ws.delete_rows(max_row )# ws.delete_rows(max_row - 1, 1)删除第20周,19和21都在# ws.delete_rows(max_row - 1, 2)删除第20周和21,19在# 再次保存修改后的文件
wb.save(output_file)
print(f"所有工作表的最后一行已删除,并保存到: {output_file}")

结果展示

一、总表

总表里生成有21周

二、班级表

删除每个班级运动里面的最后一行

如果想删除最后2行

也就是想删除几行数字写第二个,最高行是删除数减去1

如果想隔行删除,修改最高行减去的数字。

二、游戏活动

大班游戏活动就用大班运动的那个代码。把备注补上

批量修改字母,文字

同时基础模板提取格式为索引6开始的文字

代码展示


'''
目的:2024年2月大班总部分散游戏场地,每星期只有一条(各班滚动排)
大班是7个班,一个基础循环49天,循环3次21周,需要删除最后7天的内容
(一周一次,就不用考虑节假日了)
作者:阿夏、星火讯飞
时间:2024年2月15日15:30
'''import sys
import random
import xlrd
import xlwt
from openpyxl import load_workbook
import time
import os, shutil# 一共20周
w = 20
# 五周一循环
xz = 7
# 提取元素数量,140个
zc=w*xz# 循环次数,多一点
y = 3
print(y)print('---------第1步:把8个游戏场地循环21次(105元素组成的列表)------')# 本学期:总园大班只有5个
gradenum = ['1','2', '3', '4', '5', '6','7']path = r"C:\Users\jg2yXRZ\OneDrive\桌面\202502 大班3类活动批量"
# 新建一个”装N份word和PDF“的文件夹game = []
classroom = []
week = []# 这里是8个游戏场地,因为后面有递进,所以把最后一个 ,放到01前面,这样摆放后面才会正确)
gameall = [   '建构游戏1——绿操场(东)',   '表演游戏2——广场砖',  '角色游戏2——南侧草坪(西)','建构游戏2——302',             '表演游戏1——绿操场(西)', '角色游戏1——南侧草坪(东)',  '沙水游戏——中庭沙水区', 
]
# game=[1,2,3,4,5]
# 规律是,第一组12345,第二组23451 第三组34512 第三组45123,第五组51234
# ss = gameall * 20sp=[]
# 添加第1组
sp= gameall.copy()
print(game)
# 添加第2-6组
for i in range(xz-1):  # 总共需要添加4次,因为已经有一个初始组gameall =gameall[6:] +gameall[:6]print(f"第{i + 1}次提取的元素: {gameall}")for x in gameall:sp.append(x)
print(len(sp))# 49次game=[]
# # 手动复制3次
for x in range(y):    # 7周一循环,最少3次=21周for yy in sp:game.append(yy)
# 提取前140个,正好20周,每周7个场次print("运用场地:", game)
print("游戏场地长度:", len(game))
# 140classroom=[]for x in range(y):  # 4for i in range(len(gradenum)):for oo in range(xz):classroom.append(f'大{gradenum[i]}班')print(classroom)
print(len(classroom))
# 140
week=[]
for x in range(y):  # 4for o in range(xz):  # x=5         for l in range(x * xz + 1, x * xz + xz + 1):ww = f'第{l:02}周'week.append(ww)week= week
print(week)
print(len(week))# 制作表格
import openpyxl
from openpyxl import Workbook# 创建一个工作簿对象
wb = Workbook()
ws = wb.active
ws.title = "总表"# 在A1写入“班级”,B1写入“周次”,C1写入“游戏场地”
ws['A1'] = '班级'
ws['B1'] = '周次'
ws['C1'] = '游戏场地'# 从A2开始写入classroom,B2开始写入week,C2开始写入game
for i in range(len(classroom)):ws[f'A{i + 2}'] = classroom[i]ws[f'B{i + 2}'] = week[i]ws[f'C{i + 2}'] = game[i]# 将总表内容按照班级拆分到同一个工作簿的不同工作表大,标签为“班级+分散游戏安排”
for grade in gradenum:ws_new = wb.create_sheet(title=f'大{grade}班分散游戏安排')ws_new['A1'] = '班级'ws_new['B1'] = '周次'ws_new['C1'] = '游戏场地'row = 2for i in range(len(classroom)):if classroom[i].startswith(f'大{grade}'):ws_new[f'A{row}'] = classroom[i]ws_new[f'B{row}'] = week[i]ws_new[f'C{row}'] = game[i]row += 1# 保存到文件
output_file = path + r'\02 大班分散游戏..xlsx'
wb.save(output_file)
print(f"Excel文件已保存到: {output_file}")# 删除最后一行“第21周”
# 重新打开保存的文件以进行进一步操作
wb = openpyxl.load_workbook(output_file)# 遍历所有工作表,删除最后一行
for sheet_name in wb.sheetnames:ws = wb[sheet_name]max_row = ws.max_rowif max_row > 1:  # 确保不是只有标题行的工作表# 逆序循环删除倒数几行ws.delete_rows(max_row-0,1 )# 删除最后1行# 如果想倒着删除多行# ws.delete_rows(max_row - 1, 2)        # 删除最后2行# 删除第20周,19和21都在# ws.delete_rows(max_row - 2, 3)# 删除最后3行# 再次保存修改后的文件
wb.save(output_file)
print(f"所有工作表的最后一行已删除,并保存到: {output_file}")

1分钟就写好了

一、总表

二、班级表

三、个别化

大班的个别化每周只有写一个个别化活动室,但实际上内容和中班每周写三个活动室是一样的思路

我发现它的基本模板规律是:

1、“室内美术、户外美术、户外美术+图+科+图+科”

2、“室内美术、户外美术、户外美术+科+图+科+图”

而且每个班级还表明了周一、周二、周三、周四

好吧,开始痛苦的基础模板制作

把基础模板核对是否正确

代码展示


'''
目的:2024年2月大班总部分散个别化场地,每星期只有一条(各班滚动排)
大班是7个班,一个基础循环49天,循环3次21周,需要删除最后7天的内容
(一周一次,就不用考虑节假日了)
作者:阿夏、星火讯飞
时间:2024年2月15日15:30
'''import sys
import random
import xlrd
import xlwt
from openpyxl import load_workbook
import time
import os, shutil# 一共20周
w = 20
# 五周一循环
xz = 7
# 提取元素数量,140个
zc=w*xz# 循环次数,多一点
y = 3
print(y)print('---------第1步:把8个个别化场地循环21次(105元素组成的列表)------')# 本学期:总园大班只有5个
gradenum = ['1','2', '3', '4', '5', '6','7']path = r"C:\Users\jg2yXRZ\OneDrive\桌面\202502 大班3类活动批量"
# 新建一个”装N份word和PDF“的文件夹study = []
classroom = []
week = []
# for x in range(y):  # 4
# 初始化基础模型
a = ['室内美工', '户外美术', '户外美术']
b=['图书吧', '科探室']*2
c=['科探室','图书吧', ]*2
print(a,b,c)l1 = [a[2]] + b[:] + a[:2]
l2 = c[:2] + a + b[:2]
l3 = a[1:] + c + [a[0]]
l4 = b[:3] + a + [c[0]]
l5 = a + c
l6 = b + a
l7 = [c[0]] + a + b[:3]
mx = l1 + l2 + l3 + l4 + l5 + l6 + l7
print(mx)
print(len(mx))# 将 mx 按每7个元素一组进行分组
grouped_mx = [mx[i:i+7] for i in range(0, len(mx), 7)]
print(grouped_mx)# for x in grouped_mx:
#     print(x)study=[]
# # 手动复制3次
for x in range(y):    # 7周一循环,最少3次=21周for yy in mx:study.append(yy)
# 提取前140个,正好20周,每周7个场次print("运用场地:", study)
print("个别化场地长度:", len(study))
# 140classroom=[]for x in range(y):  # 4for i in range(len(gradenum)):for oo in range(xz):classroom.append(f'大{gradenum[i]}班')print(classroom)
print(len(classroom))
# 140
week=[]
for x in range(y):  # 4for o in range(xz):  # x=5         for l in range(x * xz + 1, x * xz + xz + 1):ww = f'第{l:02}周'week.append(ww)week= week
print(week)
print(len(week))# 制作表格
import openpyxl
from openpyxl import Workbook# 创建一个工作簿对象
wb = Workbook()
ws = wb.active
ws.title = "总表"# 在A1写入“班级”,B1写入“周次”,C1写入“个别化场地”
ws['A1'] = '班级'
ws['B1'] = '周次'
ws['C1'] = '个别化场地'aa=classroom[:7]
# 探索室
bb=[’四]
cc=# 从A2开始写入classroom,B2开始写入week,C2开始写入study
for i in range(len(classroom)):ws[f'A{i + 2}'] = classroom[i]ws[f'B{i + 2}'] = week[i]ws[f'C{i + 2}'] = study[i]ws[f'C{i + 2}'] = '本周'+study[i]+'活动。'# 将总表内容按照班级拆分到同一个工作簿的不同工作表大,标签为“班级+分散个别化安排”for grade in gradenum:ws_new = wb.create_sheet(title=f'大{grade}班分散个别化安排')ws_new['A1'] = '班级'ws_new['B1'] = '周次'ws_new['C1'] = '个别化场地'row = 2for i in range(len(classroom)):if classroom[i].startswith(f'大{grade}'):ws_new[f'A{row}'] = classroom[i]ws_new[f'B{row}'] = week[i]ws_new[f'C{row}'] = study[i]# ws_new[f'C{row}'] = '本周'+study[i]+'活动。'row += 1# 保存到文件
output_file = path + r'\03 大班个别化学习..xlsx'
wb.save(output_file)
print(f"Excel文件已保存到: {output_file}")# 删除最后一行“第21周”
# 重新打开保存的文件以进行进一步操作
wb = openpyxl.load_workbook(output_file)# 遍历所有工作表,删除最后一行
for sheet_name in wb.sheetnames:ws = wb[sheet_name]max_row = ws.max_rowif max_row > 1:  # 确保不是只有标题行的工作表# 逆序循环删除倒数几行ws.delete_rows(max_row-0,1 )# 删除最后1行# 如果想倒着删除多行# ws.delete_rows(max_row - 1, 2)        # 删除最后2行# 删除第20周,19和21都在# ws.delete_rows(max_row - 2, 3)# 删除最后3行# 再次保存修改后的文件
wb.save(output_file)
print(f"所有工作表的最后一行已删除,并保存到: {output_file}")

然后询问大班组长是否要吧(周一)写入?

结果:周一写在前面

查看房间使用星期,可探索室,大1-大6班都是固定的周一、周三,但是最后的大7班,一天是周一、一天是周三

同理发现图书吧也是大1班两天不同,其他班级相同

询问后这是正确的排法,避免出现使用同一个活动室的情况

这对我的想用遍历方式,配对‘班级’、‘房间’,‘星期’来说,就不适合了。

于是我立刻想到,用读取docx表格的方式,将49个元素做成一个列表

顺利将49个元素提取了

(这是最方便的方法了。下次做表格统计,也用这个方法,直接提取,不用切片了)

然后识别cell里面是否有“一二三四五”,有就把汉字放入最前面,删除括号和里面的周X


'''
目的:2024年2月大班总部分散个别化场地,每星期只有一条(各班滚动排)
# 提取word里面的表格里面的49个元素
大班是7个班,一个基础循环49天,循环3次21周,需要删除最后7天的内容
(一周一次,就不用考虑节假日了)
作者:阿夏、星火讯飞
时间:2024年2月15日15:30
'''import sys
import random
import xlrd
import xlwt
from openpyxl import load_workbook
import time
import os, shutil# 一共20周
w = 20
# 五周一循环
xz = 7
# 提取元素数量,140个
zc=w*xz# 循环次数,多一点
y = 3
print(y)print('---------第1步:把8个个别化场地循环21次(105元素组成的列表)------')# 本学期:总园大班只有5个
gradenum = ['1','2', '3', '4', '5', '6','7']path = r"C:\Users\jg2yXRZ\OneDrive\桌面\202502 大班3类活动批量"
# 新建一个”装N份word和PDF“的文件夹study = []
classroom = []
week = []
# for x in range(y):  # 4
# 初始化基础模型
from docx import Document# 打开Word文档
doc = Document(path+r'\03 大班 2025.2个别化活动安排(1).docx')# 获取文档中的所有表格
tables = doc.tables# 检查是否有表格存在
if len(tables) >= 0:# 获取第一张表格table = tables[0]# 初始化一个空列表来存储单元格的值cell_values = []# 定义要查找的汉字target_chars = ['一', '二', '三', '四', '五']# 遍历表格的行和列,提取指定单元格的值for row in range(1, 8):  # 从第2行到第7行(索引从0开始)for col in range(1, 8):  # 从第2列到第7列(索引从0开始)cell = table.cell(row, col).textprint(f"Original cell content: {cell}")# 检查单元格内容是否包含目标汉字for char in target_chars:if char in cell:# 将汉字加到单元格内容的前面,并舍弃最后4个字符modified_cell = char + cell[:-4]cell_values.append(modified_cell)breakelse:# 如果单元格内容不包含目标汉字,直接添加原始内容cell_values.append(cell)# cell_values.append(cell.text)
else:print("文档中没有表格")# 打印结果
print(cell_values)
print(len(cell_values))
# 49# # 将 mx 按每7个元素一组进行分组
# grouped_mx = [mx[i:i+7] for i in range(0, len(mx), 7)]
# print(grouped_mx)# # for x in grouped_mx:
# #     print(x)study=[]
# # 手动复制3次
for x in range(y):    # 7周一循环,最少3次=21周for yy in cell_values:study.append(yy)
# 提取前140个,正好20周,每周7个场次print("运用场地:", study)
print("个别化场地长度:", len(study))
# 140classroom=[]for x in range(y):  # 4for i in range(len(gradenum)):for oo in range(xz):classroom.append(f'大{gradenum[i]}班')print(classroom)
print(len(classroom))
# 140
week=[]
for x in range(y):  # 4for o in range(xz):  # x=5         for l in range(x * xz + 1, x * xz + xz + 1):ww = f'第{l:02}周'week.append(ww)week= week
print(week)
print(len(week))# 制作表格
import openpyxl
from openpyxl import Workbook# 创建一个工作簿对象
wb = Workbook()
ws = wb.active
ws.title = "总表"# 在A1写入“班级”,B1写入“周次”,C1写入“个别化场地”
ws['A1'] = '班级'
ws['B1'] = '周次'
ws['C1'] = '个别化场地'# 从A2开始写入classroom,B2开始写入week,C2开始写入study
for i in range(len(classroom)):ws[f'A{i + 2}'] = classroom[i]ws[f'B{i + 2}'] = week[i]ws[f'C{i + 2}'] = study[i]ws[f'C{i + 2}'] = '本周'+study[i]+'活动。'# 将总表内容按照班级拆分到同一个工作簿的不同工作表大,标签为“班级+分散个别化安排”for grade in gradenum:ws_new = wb.create_sheet(title=f'大{grade}班分散个别化安排')ws_new['A1'] = '班级'ws_new['B1'] = '周次'ws_new['C1'] = '个别化场地'row = 2for i in range(len(classroom)):if classroom[i].startswith(f'大{grade}'):ws_new[f'A{row}'] = classroom[i]ws_new[f'B{row}'] = week[i]# ws_new[f'C{row}'] = study[i]ws_new[f'C{row}'] = '本周'+study[i]+'活动。'row += 1# 保存到文件
output_file = path + r'\03 大班个别化学习..xlsx'
wb.save(output_file)
print(f"Excel文件已保存到: {output_file}")# 删除最后一行“第21周”
# 重新打开保存的文件以进行进一步操作
wb = openpyxl.load_workbook(output_file)# 遍历所有工作表,删除最后一行
for sheet_name in wb.sheetnames:ws = wb[sheet_name]max_row = ws.max_rowif max_row > 1:  # 确保不是只有标题行的工作表# 逆序循环删除倒数几行ws.delete_rows(max_row-0,1 )# 删除最后1行# 如果想倒着删除多行# ws.delete_rows(max_row - 1, 2)        # 删除最后2行# 删除第20周,19和21都在# ws.delete_rows(max_row - 2, 3)# 删除最后3行# 再次保存修改后的文件
wb.save(output_file)
print(f"所有工作表的最后一行已删除,并保存到: {output_file}")

四、合并表格,不需要填充黄色了

'''
05 组合三类安排表内容到 一个excel(因为本次运动\游戏都是一天,而不是五天,可以合并在一起,便于复制.黄色一条说明是美术室周,个别化要写美术地内容)
作者:阿夏
时间:2025年2月18日
'''
import os
import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import PatternFill
from openpyxl.utils import get_column_letter
from copy import deepcopy
import xlrd,time
import xlwt
import openpyxl
from openpyxl import load_workbook# 定义文件夹路径和文件名列表
folder_path = r'C:\Users\jg2yXRZ\OneDrive\桌面\202502 大班3类活动批量'
new = folder_path + r'\三类表格'
new_name = folder_path + r'\05 总园大班周计划三类活动写法.xlsx'# 过滤出所有的 Excel 文件(假设扩展名为 .xlsx)
excel_files = [file for file in os.listdir(new) if file.endswith('.xlsx')]
print("Excel 文件名:", excel_files)
# ['01 大班分散运动..xlsx', '02 大班户外游戏..xlsx', '03 大班个别化..xlsx', '04 大班美工室游戏..xlsx']# 读取第一个 Excel 文件并复制它
first_file = os.path.join(new, excel_files[0])
wb = load_workbook(first_file)
wb.save(new_name)# 打开复制后的文件以进行修改
copied_file = new_name
wb_copy = load_workbook(copied_file)
ws_copy = wb_copy.active# 假设excel_files, new, ws_copy, and copied_file已经在其他地方定义
n=1
for file in excel_files[1:]:file_path = os.path.join(new, file)wb_source = load_workbook(file_path)# 获取所有工作表名称sheet_names = [sheet.title for sheet in wb_source.worksheets]print("表名:", sheet_names)for sheet_name in sheet_names[1:]:# 检查工作表名称前3个字是否匹配matched_sheet = Nonefor target_sheet_name in ws_copy.parent.sheetnames:if sheet_name[:3] == target_sheet_name[:3]:matched_sheet = target_sheet_namebreakif matched_sheet:print(f"正在处理工作表: {sheet_name} -> {matched_sheet}")# 读取源工作表的C列数据(包括标题)source_df = pd.read_excel(file_path, sheet_name=sheet_name, usecols='C')print(source_df)# 调试:打印源数据框的列(针对工作表名称)print(f"源数据框的列 {sheet_name}: {source_df.columns}")# 获取源数据框的列名,这里应该是'C'列column_name = source_df.columns[0]if column_name in source_df.columns:# 获取目标工作表对象target_ws = ws_copy.parent[matched_sheet]# 将数据写入目标工作表的D列(包括标题)# 首先写入标题target_ws.cell(row=1, column=n+3).value = column_name  # Column n+4 corresponds to 'D', 'E', 'F', etc.# 然后写入数据for i, value in enumerate(source_df[column_name], start=2):  # Start from row 2 to leave space for the headertarget_ws.cell(row=i, column=n+3).value = value# 复制源单元格样式到目标单元格source_cell = wb_source[sheet_name].cell(row=i, column=3)  # Source cell is in column C (index 3)target_cell = target_ws.cell(row=i, column=n+4)else:print(f"Column '{column_name}' not found in {sheet_name}")else:print(f"没有找到与工作表 {sheet_name} 前3个字匹配的目标工作表")# 增加列索引以处理下一个文件的数据到下一列n += 1# 自动调整最适合的列宽
for sheet in wb_copy.sheetnames:ws = wb_copy[sheet]for col in ws.columns:max_length = 0column = col[0].column_letter  # Get the column namefor cell in col:try:if len(str(cell.value)) > max_length:max_length = len(str(cell.value))except:passadjusted_width = (max_length + 2) * 1.8  # Adding a little extra spacews.column_dimensions[column].width = adjusted_width# ## 删除第一张工作表“总表”first_sheet = wb_copy.worksheets[0]
wb_copy.remove(first_sheet)# 保存修改后的文件
wb_copy.save(copied_file)
print("操作完成!")

这是我写代码的第4年,第6次做周计划的表格,终于发现一个更简单的基础模式制作方式——直接用python读取word的第一张表格的内部范围。就可以做出基本列表了!

转发给大班组长

哈哈,作为班主任,我深知“周计划”制作的“痛苦”。

所以有一份班本化的“运动、游戏、个别化”20周安排表,绝对受一线教师欢迎——每周贴周计划,就变得很简单。

相关文章:

【办公类-90-02】】20250215大班周计划四类活动的写法(分散运动、户外游戏、个别化综合)(基础列表采用读取WORD表格单元格数据,非采用切片组合)

背景需求: 做了中班的四类活动安排表,我顺便给大班做一套 【办公类-90-01】】20250213中班周计划四类活动的写法(分散运动、户外游戏、个别化(美工室图书吧探索室))-CSDN博客文章浏览阅读874次&#xff0…...

求矩阵对角线元素的最大值

求主对角线元素的最大值时,让指针指向A[N-1][N-1],指针以(N1)为单位递增,就可以指向对角线每个元素; 求次对角线元素的最大值时,让指针指向A[0][N-1],指针以(N-1)为单位递增,就可以指向副对角线…...

NoSQL之redis数据库

案例知识 关系与分关系型数据库 关系型数据库:Oracle,MySQL,SQL Server 非关系型数据库:Redis,MongDB Redis文件路径 配置文件:/etc/redis/6379.conf 日志文件:/var/log/redis_6379.log 数据文…...

【R语言】非参数检验

一、Mann-Whitney检验 在R语言中,Mann-Whitney U检验(也称为Wilcoxon秩和检验)用于比较两个独立样本的中位数是否存在显著差异。它是一种非参数检验,适用于数据不满足正态分布假设的情况。 1、独立样本 # 创建两个独立样本数据…...

【力扣Hot 100】栈

1. 有效的括号 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应…...

HTTP 与 HTTPS:协议详解与对比

文章目录 概要 一. HTTP 协议 1.1 概述 1.2 工作原理 1.3 请求方法 1.4 状态码 二. HTTPS 协议 2.1 概述 2.2 工作原理 2.3 SSL/TLS 协议 2.4 证书 三. HTTP 与 HTTPS 的区别 四. 应用场景 4.1 HTTP 的应用场景 4.2 HTTPS 的应用场景 概要 HTTP(Hy…...

C++编程语言:抽象机制:模板和层级结构(Bjarne Stroustrup)

目录 27.1 引言(Introduction) 27.2 参数化和层级结构(Parameterization and Hierarchy) 27.2.1 生成类型(Generated Types) 27.2.2 模板转换(Template Conversions) 27.3 类模板层级结构(Hierarchies of Class Templates) 27.3.1 模板对比接口(Templates as Interf…...

建筑兔零基础自学python记录22|实战人脸识别项目——视频人脸识别(下)11

这次我们继续解读代码,我们主要来看下面两个部分; 至于人脸识别成功的要点我们在最后总结~ 具体代码学习: #定义人脸名称 def name():#预学习照片存放位置path M:/python/workspace/PythonProject/face/imagePaths[os.path.join(path,f) f…...

在使用export default 导出时,使用的components属性的作用?

文章目录 析与思考回答 析与思考 在 Vue.js 中,使用 export default 导出组件时,通常会通过 components 选项将子组件也导出出来(其实是将子组件进行局部注册) 。这涉及到 Vue.js 组件的注册机制。为了更清晰地理解这个问题&…...

以太网交换基础(涵盖二层转发原理和MAC表的学习)

在当今的网络世界中,以太网交换技术是局域网(LAN)的核心组成部分。无论是企业网络、学校网络还是家庭网络,以太网交换机都扮演着至关重要的角色。本文将详细介绍以太网交换的基础知识,包括以太网协议、帧格式、MAC地址…...

Vue 实现通过URL浏览器本地下载 PDF 和 图片

1、代码实现如下: 根据自己场景判断 PDF 和 图片,下载功能可按下面代码逻辑执行 const downloadFile async (item: any) > {try {let blobUrl: any;// PDF本地下载if (item.format pdf) {const response await fetch(item.url); // URL传递进入i…...

【2025最新计算机毕业设计】基于SpringBoot+Vue非遗传承与保护研究系统【提供源码+答辩PPT+文档+项目部署】

作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…...

组合总和力扣--39

目录 题目 思路 剪枝优化 代码 题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的…...

echarts tooltip高亮某个值,某一项选中高亮状态

需求: 当有多组数据的时候,常常需要对比同一x轴的不同线上的点的数据,并且当数据组过多的时候,也就是线过多的时候,需要明确知道我们当前选中的线是哪条。 解决方案: 通过设置显示x轴的tooltip可以显示同…...

Vue 3:基于按钮切换动态图片展示(附Demo)

目录 前言1. Demo2. 升级Demo3. 终极Demo 前言 原先写过类似的知识点: 详细分析el-breadcrumb 面包屑的基本知识(附Demo)详细分析el-card中的基本知识(附Demo) 本篇博客将介绍如何通过点击按钮切换不同的图片&#…...

【Java】泛型与集合篇 —— 泛型

目录 泛型泛型的核心作用泛型类型(类)定义与使用类型参数命名约定泛型方法定义与调用与泛型类的区别通配符上界通配符下界通配符有界类型参数类型擦除类型擦除过程影响好处泛型 泛型的核心作用 泛型是 Java 实现代码复用和类型安全的重要机制。它允许在类、接口和方法中定义…...

【JAVA:list中再定义一个list对象,循环赋值不同的list数据,出现追加重复数据问题】

问题描述: list中再定义一个list对象,循环赋值不同的list数据,结果全部都累加到每条数据中了,每条数据中都出现重复数据。 问题解决: 1.创建树结构方法信息 2.创建一个新的 List 对象,避免引用问题 3.使…...

为什么外贸办公需要跨境专线网络?

你好,今天我们来聊聊SD-WAN技术在出海企业办公中的应用以及其带来的诸多优势。当今出海企业在与海外分支机构或合作伙伴开展高效的网络通讯和数据传输时,面临着许多挑战。此时,SD-WAN作为一种新兴的网络优化技术,正在改变这些企业…...

帆软报表FineReport入门:简单报表制作[扩展|左父格|上父格]

FineReport帮助文档 - 全面的报表使用教程和学习资料 数据库连接 点击号>>JDBC 选择要连接的数据库>>填写信息>>点击测试连接 数据库SQLite是帆软的内置数据库, 里面有练习数据 选择此数据库后,点击测试连接即可 数据库查询 方法一: 在左下角的模板数据集…...

Nginx 在Linux中安装、使用

Nginx 在Linux中安装、使用 一、官网下载Nginx 官网地址:http://nginx.org/en/download.html 二、上传到服务器解压 1、上传到指定的服务器地址 上传的地址自己决定,我上传到 /data/home/prod/nginx/ 2、解压 使用命令: tar -zxvf “你的N…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...

2025季度云服务器排行榜

在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...