【办公类-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 * 20

sp=[]
# 添加第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))
# 140


classroom=[]

for x in range(y):  # 4
    for 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):  # 4
    for 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 = 2
    for 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_row
    if 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 * 20

sp=[]
# 添加第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))
# 140


classroom=[]

for x in range(y):  # 4
    for 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):  # 4
    for 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 = 2
    for 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_row
    if 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))
# 140


classroom=[]

for x in range(y):  # 4
    for 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):  # 4
    for 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 = 2
    for 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_row
    if 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).text
            print(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)
                    break
            else:
                # 如果单元格内容不包含目标汉字,直接添加原始内容
                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))
# 140


classroom=[]

for x in range(y):  # 4
    for 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):  # 4
    for 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 = 2
    for 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_row
    if 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 = None
        for target_sheet_name in ws_copy.parent.sheetnames:
            if sheet_name[:3] == target_sheet_name[:3]:
                matched_sheet = target_sheet_name
                break
        
        if 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 header
                    target_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 = 0
        column = col[0].column_letter  # Get the column name
        for cell in col:
            try:
                if len(str(cell.value)) > max_length:
                    max_length = len(str(cell.value))
            except:
                pass
        adjusted_width = (max_length + 2) * 1.8  # Adding a little extra space
        ws.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周安排表,绝对受一线教师欢迎——每周贴周计划,就变得很简单。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/972217.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习笔记之自然语言处理(NLP)

深度学习笔记之自然语言处理(NLP) 在行将开学之时,我将开始我的深度学习笔记的自然语言处理部分,这部分内容是在前面基础上开展学习的,且目前我的学习更加倾向于通识。自然语言处理部分将包含《动手学深度学习》这本书的第十四章&#xff0c…

使用IDEA创建Maven项目、Maven坐标,以及导入Maven项目

一、创建Maven项目 正如使用Vue创建工程化的前端项目,此时,使用Maven创建标准化的后端项目。 以下适用于2021版本的IDEA。 name和artifactid会自动保持一致。 Groupid:一般写公司域名倒写,再加上项目名(也可以不…

Oracle视图(基本使用)

视图 视图是通过定制的方式显示一个或者多个表的数据。 视图可以视为“虚拟表”或“存储的查询”。 视图的优点: 提供了另外一种级别的表安全性隐藏了数据的复杂性简化了用户的SQL命令隔离基表结构的改变通过重命名列,从另一个角度提供数据。 视图里…

安装海康威视相机SDK后,catkin_make其他项目时,出现“libusb_set_option”错误的解决方法

硬件:雷神MIX G139H047LD 工控机 系统:ubuntu20.04 之前运行某项目时,处于正常状态。后来由于要使用海康威视工业相机(型号:MV-CA013-21UC),便下载了并安装了该相机的SDK,之后运行…

【Vue+python】Vue调用python-fastApi接口实现数据(数值、列表类型数据)渲染

前言:之前做的一直都是SpringBootVue的应用,但现在需要实现一个能将python实现的算法应用展示在前端的界面。想法是直接Vue调用python-fastApi接口实现数据渲染~ 文章目录 1. 变量定义2. axios调用python3. 跨域问题解决4. 数据渲染4.1 数值数据渲染4.2 …

Linux中线程创建,线程退出,线程接合

线程的简单了解 之前我们了解过 task_struct 是用于描述进程的核心数据结构。它包含了一个进程的所有重要信息,并且在进程的生命周期内保持更新。我们想要获取进程相关信息往往从这里得到。 在Linux中,线程的实现方式与进程类似,每个线程都…

用deepseek学大模型08-长短时记忆网络 (LSTM)

deepseek.com 从入门到精通长短时记忆网络(LSTM),着重介绍的目标函数,损失函数,梯度下降 标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据, 模型应用场景和优缺点,及如何改进解决及改进方法数据推导…

力扣 买卖股票的最佳时机

贪心算法典型例题。 题目 做过股票交易的都知道,想获取最大利润,就得从最低点买入,最高点卖出。这题刚好可以用暴力,一个数组中找到最大的数跟最小的数,然后注意一下最小的数在最大的数前面即可。从一个数组中选两个数…

mysql的rpm包安装

(如果之前下载过mariadb,使用yum remove mariadb卸载,因为mariadb与rpm包安装的mysql有很多相似的组件和文件,会发生冲突,而源码包安装的mysql不会,所以不用删除源码包安装myqsl,只删除mariadb就可以&#…

vue3 子组件属性响应性丢失分析总结(四)

一、先看例子&#xff1a; <script setup lang"ts"> import { onMounted, reactive, ref, watch } from vue; import Test from /components/Test.vue;let a {a:"a"};const aRef ref(a);var aReactive reactive(a);let bObj "B";cons…

Jenkins同一个项目不同分支指定不同JAVA环境

背景 一些系统应用,会为了适配不同的平台,导致不同的分支下用的是不同的gradle,导致需要不同的JAVA环境来编译,比如a分支需要使用JAVA11, b分支使用JAVA17。 但是jenkins上,一般都是Global Tool Configuration 全局所有环境公用一个JAVA_HOME。 尝试过用 Build 的Execut…

实现可拖拽的 Ant Design Modal 并保持下层 HTML 可操作性

前言 在开发复杂的前端界面时&#xff0c;我们常常需要一个可拖拽的弹窗&#xff08;Modal&#xff09;&#xff0c;同时又希望用户能够在弹窗打开的情况下操作下层的内容。Ant Design 的 Modal 组件提供了强大的功能&#xff0c;但默认情况下&#xff0c;弹窗会覆盖整个页面&…

网络安全三件套

一、在线安全的四个误解     Internet实际上是个有来有往的世界&#xff0c;你可以很轻松地连接到你喜爱的站点&#xff0c;而其他人&#xff0c;例如黑客也很方便地连接到你的机器。实际上&#xff0c;很多机器都因为自己很糟糕的在线安全设置无意间在机器和系统中留下了“…

Jetson Agx Orin平台JP6.0-r36.3版本修复了vi模式下的原始图像损坏(线条伪影)

1.问题描述 这是JP-6.0 GA/ l4t-r36.3.0的一个已知问题 通过vi模式捕获的图像会导致异常线条 参考下面的快照来演示这些线伪影 这个问题只能通过VI模式进行修复,不应该通过LibArgus看到。 此外,这是由于内存问题。 由于upstream已经将属性名称更改为“dma-noncoherent”…

封装neo4j的持久层和服务层

目录 持久层 mp 模仿&#xff1a; 1.抽取出通用的接口类 2.创建自定义的repository接口 服务层 mp 模仿&#xff1a; 1.抽取出一个IService通用服务类 2.创建ServiceImpl类实现IService接口 3.自定义的服务接口 4.创建自定义的服务类 工厂模式 为什么可以使用工厂…

Spring Boot (maven)分页2.0版本

前言&#xff1a; 通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识&#xff0c;又从理性认识而能动地指导革命实践&#xff0c;改造主观世界和客观世界。实践、认识、再实践、再认识&#xff0c;这种形式&#xff0c;循环往…

Docker安装Minio对象存储

介绍 MinIO 是一种对象存储解决方案&#xff0c;提供与Amazon Web Services S3兼容的API并支持所有核心S3功能。MinIO可部署在任何地方&#xff1a;公共云或私有云、裸机基础设施、编排环境和边缘基础设施。 详情参见官方文档&#xff1a;MinIO Object Storage for Container…

BERT 大模型

BERT 大模型 EmbeddingTransformer预微调模块预训练任务 BERT 特点 : 优点 : 在语言理解相关任务中表现很好缺点 : 更适合 NLU 任务&#xff0c;不适合 NLG 任务 BERT 架构&#xff1a;双向编码模型 : Embedding 模块Transformer 模块预微调模块 Embedding Embedding 组成 …

cmake:定位Qt的ui文件

如题。在工程中&#xff0c;将h&#xff0c;cpp&#xff0c;ui文件放置到不同文件夹下&#xff0c;会存在cmake找不到ui文件&#xff0c;导致编译报错情况。 cmake通过指定文件路径&#xff0c;确保工程找到ui文件。 标识1&#xff1a;ui文件保存路径。 标识2&#xff1a;添加…

DFS算法篇:理解递归,熟悉递归,成为递归

1.DFS原理 那么dfs就是大家熟知的一个深度优先搜索&#xff0c;那么听起来很高大尚的一个名字&#xff0c;但是实际上dfs的本质就是一个递归&#xff0c;而且是一个带路径的递归&#xff0c;那么递归大家一定很熟悉了&#xff0c;大学c语言课程里面就介绍过递归&#xff0c;我…