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

深圳网站建设的费用tool站长工具

深圳网站建设的费用,tool站长工具,惠州制作网站软件,b2c商城网站合同每学期的周计划制作模板都会调整 开学在即,组长发了新的运动、游戏、个别化安排表 今年的规则是 1,运动从一周五个项目变成了一个项目 2、游戏从一周五个项目变成了一个项目。 3、美工室轮到的周次,个别化内容需要写“美术材料” 4、图书…

每学期的周计划制作模板都会调整

开学在即,组长发了新的运动、游戏、个别化安排表

 

今年的规则是

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

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

3、美工室轮到的周次,个别化内容需要写“美术材料”

4、图书和探索室写法不变。

我根据周计划模板,把内容分类编号

然后就对每个项目进行批量制作

一、分散运动

要求:

本次我设计的思路是,

1、做一个列表25个元素,场地1、2、3、4、5、场地2、3、4、5、1、场地3、4、5、1、2、场地4、5、1、2、3、场地5、1、2、3、4,然后复制4次。

2、班级A列是中2、2、2、2、2、中3、3、3、3、3

3、周次B列是第1、2、3、4、5周、第1、2、3、4、5周

4、场地做成1列(以前都是5列),场地1、2、3、4、5、场地2、3、4、5、1

代码展示:


'''
目的:2024年2月中班总部分散运动场地,每星期只有一条(各班滚动排)
(一周一次,就不用考虑节假日了)
作者:阿夏、星火讯飞
时间:2024年2月12日15:30
'''import sys
import random
import xlrd
import xlwt
from openpyxl import load_workbook
import time
import os, shutil# 一共20周
w = 20
# 五周一循环
xz = 5
# 循环次数,多一点
y = int(w / xz)print('---------第1步:把8个运动场地循环21次(105元素组成的列表)------')# 本学期:总园中班只有5个
gradenum = ['2', '3', '4', '5', '6']path = r"C:\Users\jg2yXRZ\OneDrive\桌面\202502 中班4类活动批量"
# 新建一个”装N份word和PDF“的文件夹sport = []
classroom = []
week = []# 这里是8个运动场地,因为后面有递进,所以把最后一个 ,放到01前面,这样摆放后面才会正确)
sportall = ['场地1(主要材料:平衡车、三轮车、自行车、木桥等)','场地2(主要材料:竹梯、三脚架、长凳、轮胎、安全垫等)','场地3(主要材料:各类球、箩筐、百变迷宫架、马甲等)','场地4(主要材料:轮胎、跨栏、锣鼓、接力棒等)','场地5(主要材料:弹力棉球、吸盘球、滑滑梯、爬笼等)',
]
# sport=[1,2,3,4,5]
# 规律是,第一组12345,第二组23451 第三组34512 第四组45123,第五组51234
ss = sportall * 10
# radenum的长度=5,生成了25周  5周一循环,
for x in range(y):  # 4#     # 场地   for i in range(len(gradenum)):# 5个班级5周循环start_index = iend_index = i + 5extracted_elements = ss[start_index:end_index]print(f"第{i + 1}次提取的元素: {extracted_elements}")for ww in extracted_elements:sport.append(ww)  # print(sport)# print(len(sport))#   班级名称,连续出现5次for i in range(len(gradenum)):for oo in range(xz):classroom.append(f'中{gradenum[i]}班')print(classroom)print(len(classroom))# 周次名称,连续出现5次 
# for x in range(5):    # 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)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}")

把生成xlsx存到单独文件夹里

1、总表内容

2、各班表格

做出来的场地我都放在C列

二、户外游戏

要求:

分析:

1、游戏的场地写法和运动相同,复制运动的代码,微调

2、正好5个班,20周,所以正好复制4次就可以了

3、游戏需要加上场地

代码展示


'''
目的:2024年2月中班总部户外游戏场地,每星期只有一条(各班滚动排)
(一周一次,就不用考虑节假日了)
作者:阿夏、星火讯飞
时间:2024年2月29日15:30
'''import sys
import random
import xlrd
import xlwt
from openpyxl import load_workbook
import time
import os, shutil# 一共20周
w = 20
# 五周一循环
xz = 5
# 循环次数,多一点
y = int(w / xz)print('---------第1步:把8个游戏场地循环21次(105元素组成的列表)------')# 本学期:总园中班只有5个
gradenum = ['2', '3', '4', '5', '6']path = r"C:\Users\jg2yXRZ\OneDrive\桌面\202502 中班4类活动批量"
# 新建一个”装N份word和PDF“的文件夹game = []
classroom = []
week = []# 这里是8个游戏场地,因为后面有递进,所以把最后一个 ,放到01前面,这样摆放后面才会正确)
gameall = [    '角色游戏1——南侧草坪东','角色游戏2——南侧草坪西','表演游戏——绿操场西','沙水游戏——中庭沙水区','建构游戏——绿操场东',
]
# game=[1,2,3,4,5]
# 规律是,第一组12345,第二组23451 第三组34512 第四组45123,第五组51234
ss = gameall * 10
# radenum的长度=5,生成了25周  5周一循环,
for x in range(y):  # 4#     # 场地   for i in range(len(gradenum)):# 5个班级5周循环start_index = iend_index = i + 5extracted_elements = ss[start_index:end_index]print(f"第{i + 1}次提取的元素: {extracted_elements}")for ww in extracted_elements:game.append(ww)  # print(game)# print(len(game))#   班级名称,连续出现5次for i in range(len(gradenum)):for oo in range(xz):classroom.append(f'中{gradenum[i]}班')print(classroom)print(len(classroom))# 周次名称,连续出现5次 
# for x in range(5):    # 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)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}")

1、总表

2、班级表

三、个别化(提取探索室、图书吧的星期)

要求:

这个表有点麻烦,我看了半天。寻找规律:

第一组——基础模型

图书吧、空、空、空、探索室探索室、图书吧、空、空、空空、探索室、图书吧、空、空空、空、探索室、图书吧、空空、空、空、探索室、图书吧。

第二组:

探索室、图书吧、空、空、空空、探索室、图书吧、空、空空、空、探索室、图书吧、空空、空、空、探索室、图书吧。图书吧、空、空、空、探索室

 变化就是对第一组组合,从第索引5开始取值+前5个

第三组:

空、探索室、图书吧、空、空空、空、探索室、图书吧、空空、空、空、探索室、图书吧。图书吧、空、空、空、探索室探索室、图书吧、空、空、空

结论:最终这五周(蓝色),实际滚动了四次(红色),每次都是对前一组的“第5个到最后+前五个进行组合”

基于这个规律

代码展示


'''
目的:2024年2月个别化两个房间
(一周两次,写一条,就不用考虑节假日了)
作者:阿夏、星火讯飞
时间:2024年2月29日15:30
'''import sys
import random
import xlrd
import xlwt
from openpyxl import load_workbook
import time
import os, shutil# 一共20周
w = 20
# 五周一循环
xz = 5
# 循环次数,多一点
y = int(w / xz)print('---------第1步:把8个个别化循环21次(105元素组成的列表)------')# 本学期:总园中班只有5个
gradenum = ['2', '3', '4', '5', '6',]gradenums=gradenum*10path = r"C:\Users\jg2yXRZ\OneDrive\桌面\202502 中班4类活动批量"
# 新建一个”装N份word和PDF“的文件夹studyall=[]
study = []
classroom = []
week = []
# for x in range(y):  # 4
# 初始化基础模型
a = ['图书吧', '', '', '', '探索室']
b = ['探索室', '图书吧', '', '', '', ''] * 3
c = ['探索室', '图书吧']
studyall1 = a + b + c
print("初始 studyall1:", studyall1)
print("初始长度:", len(studyall1))# 添加第1组
studyall = studyall1.copy()# 添加第2-4组
for i in range(3):  # 总共需要添加4次,因为已经有一个初始组studyall1 = studyall1[5:] + studyall1[:5]print(f"第{i + 2}次提取的元素: {studyall1}")for x in studyall1:studyall.append(x)# 手动复制4次
studyall=studyall[:125]*4  
print("最终 studyall:", studyall)
print("最终长度:", len(studyall))for i in range(1,len(gradenum)+1):# 提取当前子序列current_sequence = gradenum[i:] + gradenum[:i]for y in current_sequence:   classroom.append(f'中{y}班')# 一共25个,只要前20个
classroom=classroom[:20]*4
print("最终结果:", classroom,len(classroom))# 周次名称,连续出现5次 for l in range(1,w+1):     # 20周    for oo in range(4):         # 每一周有4次(5个班级实际只有4个班玩)        ww = f'第{l:02}周'week.append(ww)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'] = '个别化'
ws['D1'] = '周一'
ws['E1'] = '周二'
ws['F1'] = '周三'
ws['G1'] = '周四'
ws['H1'] = '周五'
# ws['I1'] = '房间2'# 从A2开始写入classroom,B2开始写入week,C2开始写入studyall,按每五个一组写入C2到G2的位置
for i in range(len(classroom[:80])):ws[f'A{i + 2}'] = classroom[i]ws[f'B{i + 2}'] = week[i]for j in range(5):  # 每个班级有5天的活动安排67C 68Dws[chr(68 + j) + str(i + 2)] = studyall[i * 5 + j] if (i * 5 + j) < len(studyall) else ""# 处理H列的房间信息
# 遍历指定范围的单元格
for row in range(2, len(classroom[:80]) + 2):book_cell = Noneexplore_cell = None# 查找图书吧和探索室所在的单元格for col in range(68, 73):  # D到H列cell_value = ws[chr(col) + str(row)].valueif cell_value == "图书吧":book_cell = chr(col) + str(row)elif cell_value == "探索室":explore_cell = chr(col) + str(row)# 如果找到了图书吧和探索室,则提取相关信息并组合if book_cell and explore_cell:# 获取该单元格所在列的第一行单元格的值book_first_row_value = ws[chr(ord(book_cell[0])) + '1'].valueexplore_first_row_value = ws[chr(ord(explore_cell[0])) + '1'].value# 将结果写入目标单元格(例如H列)ws[f'C{row}'] = f"{book_first_row_value}{ws[book_cell].value};{explore_first_row_value}{ws[explore_cell].value}"# ws[f'I{row}'] = f""else:ws[f'C{row}'] = ""# ws[fI{row}'] = ""# 将总表内容按照班级拆分到同一个工作簿的不同工作表中,标签为“班级+个别化安排”
for grade in gradenum:ws_new = wb.create_sheet(title=f'中{grade}班个别化安排')ws_new['A1'] = '班级'ws_new['B1'] = '周次'ws_new['C1'] = '个别化'ws_new['D1'] = '周一'ws_new['E1'] = '周二'ws_new['F1'] = '周三'ws_new['G1'] = '周四'ws_new['H1'] = '周五'row = 2for i in range(len(classroom[:80])):if classroom[i].startswith(f'中{grade}'):ws_new[f'A{row}'] = classroom[i]ws_new[f'B{row}'] = week[i]for j in range(5):  # 每个班级有5天的活动安排ws_new[chr(68 + j) + str(row)] = studyall[i * 5 + j] if (i * 5 + j) < len(studyall) else ""ws_new[f'C{row}'] = ws[f'C{i + 2}'].value if i + 2 <= len(classroom[:80]) + 1 else ""# ws_new[f'I{row}'] = ws[f'I{i + 2}'].value if i + 2 <= len(classroom[:80]) + 1 else ""row += 1# 如果F列不满20条,补足# 如果C列(从第二行开始算)不满20条,就复制C1列的内容到CX列for row in range(2, 22):col_c_value = ws_new[f'C{row}'].valueif not col_c_value:ws_new[f'C{row}'] = ws_new['C2'].value# 保存到文件
output_file = path + r'\03 中班个别化..xlsx'
wb.save(output_file)
print(f"Excel文件已保存到: {output_file}")

1、总表样式

与预设表格进行核对

需要将两个有活动室的星期与活动室组合再一个格子里

内容正确

2、班级表:

我发现有些周是空缺的

组长说没关系,20周都写一样的内容

所以代码里写了,不足20条,就不足20条

先图书、再探索

可以看到虽然表格中排列复杂(因为星期和所有次数的错位),但是换算到班级,实际上班级在“轮到的几周”,都是统一的某一天的探索室或图书室。

特别说明:这套代码因为班级、周次、星期不匹配,所以参数范围要选定80条(这里测试了很多次)

四、美工室

要求:

虽然美工室排版要求简单,但是这是四张里代码最复杂的表。

改进:

1、制作成每个班级20条写法

用去年的代码,这张表生成了每班一行

本次,我想改成5个班级,每班20周20行(虽然内容都是一样的),便于制作一个“运动、游戏、个别化(美术)”的合并表单

2.对轮到的周次的哪一行进行黄色底纹填充。明确这周的个别化内容写“美术方面”

为了填充黄色,需要进行多次汉字匹配、数字匹配,最后我把把数字和汉字拆开来才实现了这种撇配,填充了黄色

代码展示

 # -- coding:utf-8 --
'''
中班美工室,6个班级(总院中班)将它做成20周竖排样式样式
作者:阿夏
时间:2025年2月18日'''
import xlrd,time
import xlwt
from openpyxl import load_workbookpath = r"C:\Users\jg2yXRZ\OneDrive\桌面\202502 中班4类活动批量"
# 新建一个”装N份word和PDF“的文件夹gradenum = ['2', '3', '4', '5', '6']classroom1=[]
for c in range(4):for a in gradenum:    classroom1 .append('中{}班'.format(a))print(classroom1)
print(len(classroom1))
# 38week1 = []
week2 = []# 定义数字和中文数字的列表
numbers = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20']
chinese_numbers = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '二十']# 循环生成 week1 和 week2
for num, chinese in zip(numbers, chinese_numbers):week1.append('第{}{}周'.format(num,chinese))week2.append('{}{}'.format(num, chinese))# 打印结果
print(week1)
print(len(week1))# # 38
# # ['第01一周', '第02二周', '第03三周', '第04四周', '第05五周', '第06六周', '第07七周', '第08八周', '第09九周', '第10十周', '第11十一周', '第12十二周', '第13十三周', '第14十四周', '第15十五周', 
# # '第16十六周', '第17十七周', '第18十八周', '第19十九周', '第20二十周']
print(week2)
print(len(week2))
# ['01一', '02二', '03三', '04四', '05五', '06六', '07七', '08八', '09九', '10十', '11十一', '12十二', '13十三', '14十四', '15十五', '16十六', '17十七', '18十八', '19十九', '20二十']
# 20big=[]
for f in classroom1:for d in range(len(week1)):    if classroom1[d]==f:bigbig='{} {}'.format(f,week1[d])big.append(bigbig)
big=sorted(set(list(big)))
print(big)
print(len(big))# # # # # 在第一周前面加上01 ,进行从小到大排序,不加01,会按照一、二的拼音字母排序# # # # # ['中1班 第01一周', '中1班 第02二周', '中1班 第13十三周', '中1班 第14十四周', '中1班 第15十五周', '中2班 第01一周', '中2班 第02二周', '中2班 第03三周', '中2班 第04四周', '中2班 第15十五周', '中2班 第16十六周', '中3班 第03三周', '中3班 第04四周', '中3班 第05五周', '中3班 第06六周', '中3班 第16十六周', '中3班 第17十七周', '中4班 第05五周', '中4班 第06六周', '中4班 第07七周', '中4班 第08八周', '中4班 第17十七周', '中4班 第18十八周', '中5班 第07七周', '中5班 第08八周', '中5班 第09九周', '中5班 第10十周', '中5班 第18十八周', '中5班 第19十九周', '中6班 第09九周', '中6班 第10十周', '中6班 第11十一周', '中6班 第12十二周', 
# # # # # '中6班 第19十九周', '中7班 第11十一周', '中7班 第12十二周', '中7班 第13十三周', '中7班 第14十四周']k=[]
kk=[]
# for x in range(20):
for g in classroom1:k.clear()for x in range(len(big)):# print(big[x])if big[x][:3]==g:# if big[x][:3]==g:# print(big[x][3:])if len(big[x])==10:                #    第十七周 一共有10个字符k.append(big[x][7:9]) # 汉字# k.append(big[x][5:7]) # 数字else:k.append(big[x][7:8]) # 汉字# k.append(big[x][6:7]) # 数字print(k)result = '、'.join(k)print(result)# ['五', '十', '十五', '二十']# 五、十、十五、二十kk.append(f'{g}第{result}周“快乐玩色彩”专用活动室')kk=sorted(set(list(kk)))
print(kk)
# ['中2班第一、六、十一、十六周“快乐玩色彩”专用活动室', '中3班第二、七、十二、十七周“快乐玩色彩”专用活动室', '中4班第三、八、十三、十八周“快乐玩色彩”专用活动室', '中5班第四、九、十四、十九周“快
# 乐玩色彩”专用活动室', '中6班第五、十、十五、二十周“快乐玩色彩”专用活动室']# # print(len(kk))# 做成20周的
art=[]
for k2 in kk:for bb in range(20):art.append(k2[3:])        # 不要班级名了。
print(art)
print(len(art))
# 100天,20周5个班# # # 汉字版本
# # # 第五、十、十五、二十周“快乐玩色彩”专用活动室classroom=[]
#   班级名称,连续出现5次for i in gradenum:for oo in range(20):classroom.append('中'+i+'班')
print(classroom)
print(len(classroom))
# 100week=[]
# 周次名称,连续出现5次 
# for x in range(5):    # 4   for l in range(5):        # 五个班级for o in range(1,21):  # 1-20周的名称 ww = f'第{o:02}周'week.append(ww)print(week)
print(len(week))
# 400# 写入EXCLE
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}'] = art[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}'] = art[i]row += 1# 保存到文件
output_file = path + r'\04 中班美工室游戏..xlsx'
wb.save(output_file)
print(f"Excel文件已保存到: {output_file}")
time.sleep(1)# # 打开已经保存的 Excel 文件
wb = openpyxl.load_workbook(output_file)
# # ws = wb['中3班分散游戏安排']
# 定义一个函数来填充单元格颜色
def fill_cell_color(ws, col, row, color):cell = f'{col}{row}'ws[cell].fill = openpyxl.styles.PatternFill(start_color=color, end_color=color, fill_type='solid')# 遍历每一张表格
for sheet_name in wb.sheetnames:ws = wb[sheet_name]# 遍历 C 列所有单元格,如果满足条件则填充颜色for row in range(2, ws.max_row + 1):  # 从第二行开始遍历,因为第一行是标题行cell_value = ws[f'C{row}'].value# 第五、十、十五、二十周“快乐玩色彩”专用活动室     if cell_value is not None:# 读取来的结果取第1-10个字符,10个字符中间有顿号,我希望以顿号切割first_ten_chars = str(cell_value)[1:10]print(first_ten_chars)# 五、十、十五、二十parts = first_ten_chars.split('、')print(parts)#     # 检查分割后的部分是否满足你的条件,这里假设条件是部分长度大于1#     if len(parts) &gt; 1 and len(parts[0]) &gt; 1 and len(parts[1]) &gt; 1:#         ws[f'C{row}'].fill = fill# # print(f"Sheet: {sheet_name}, Row: {row}, Cell Value: {cell_value}")  # 打印调试信息if cell_value:for item in week2:print('0:'+item)# 无论01一、12十二、35三十五,都是从索引2开始提取)chinese_part = item[2:]# print(chinese_part)if chinese_part in parts:  # 检查 C 列的值是否包含 chinese_partweek_number = item[:2]  # 提取数字部分并补零print('1'+week_number)if ws[f'B{row}'].value == f'第{week_number}周':  # 检查 B 列的值是否匹配fill_cell_color(ws, 'B', row, 'FFFF00')  # 黄色fill_cell_color(ws, 'C', row, 'FFFF00')  # 黄色break  # 如果找到匹配项,跳出内层循环找到# 保存更改后的文件
wb.save(output_file)
print("特定单元格已填充颜色并保存到文件中。")

星火讯飞写了无数次,反复调试了无数次,总算磕磕绊绊地实现了想要地结果。(调整里面地数字,用了不少时间)

1、总表

2、班级表

看上去简单,实际上代码目前写起来,并不简单。

五、将四表合并成一个共享版XCLX

因为本次运动、游戏变成1天(原来是5天),所以,完全可以将“运动场地”“游戏场地”美术+个别化“合在一个表里。老师们用起来也方便。

继续绞尽脑汁在星火讯飞里写”需求,反复调整。

'''
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 中班4类活动批量'
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} -&gt; {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]max_row = ws.max_rowmax_col = ws.max_column# 查找“个别化”和“美工室”列的索引individualized_col = Nonemeishuoshi_col = Nonefor col in range(1, max_col + 1):column = ws.cell(row=1, column=col).valueif column == "个别化":individualized_col = colelif column == "美工室":meishuoshi_col = colif individualized_col and meishuoshi_col:# 合并“个别化”和“美工室”列的内容for row in range(2, max_row + 1):individualized_value = ws.cell(row=row, column=individualized_col).value or ""meishuoshi_value = ws.cell(row=row, column=meishuoshi_col).value or ""combined_value = f"{meishuoshi_value};{individualized_value}".strip()ws.cell(row=row, column=individualized_col).value = combined_value# 删除“美工室”列ws.delete_cols(meishuoshi_col)else:print(f"Sheet {sheet} does not contain both '个别化' and '美工室' columns")# 自动调整最适合的列宽
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# # 填充颜色
week1 = []
week2 = []# 定义数字和中文数字的列表
numbers = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20']
chinese_numbers = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '二十']# 循环生成 week1 和 week2
for num, chinese in zip(numbers, chinese_numbers):week1.append('第{}{}周'.format(num,chinese))week2.append('{}{}'.format(num, chinese))# 打印结果
print(week1)
print(len(week1))
print(week2)
print(len(week2))
# ['01一', '02二', '03三', '04四', '05五', '06六', '07七', '08八', '09九', '10十', '11十一', '12十二', '13十三', '14十四', '15十五', '16十六', '17十七', '18十八', '19十九', '20二十']
# 20#  定义一个函数来填充单元格颜色
def fill_cell_color(ws, col, row, color):cell = f'{col}{row}'ws[cell].fill = openpyxl.styles.PatternFill(start_color=color, end_color=color, fill_type='solid')# 遍历每一张表格
for sheet_name in wb.sheetnames:#   ws = wb_copy[sheet]ws = wb_copy[sheet_name]# 遍历 C 列所有单元格,如果满足条件则填充颜色for row in range(2, ws.max_row + 1):  # 从第二行开始遍历,因为第一行是标题行cell_value = ws[f'E{row}'].value# 第五、十、十五、二十周“快乐玩色彩”专用活动室     if cell_value is not None:# 读取来的结果取第1-10个字符,10个字符中间有顿号,我希望以顿号切割first_ten_chars = str(cell_value)[1:10]print('1:'+first_ten_chars)# 五、十、十五、二十parts = first_ten_chars.split('、')print(parts)if cell_value:for item in week2:print('0:'+item)# 无论01一、12十二、35三十五,都是从索引2开始提取)chinese_part = item[2:]# print(chinese_part)if chinese_part in parts:  # 检查 C 列的值是否包含 chinese_partweek_number = item[:2]  # 提取数字部分并补零print('1'+week_number)if ws[f'B{row}'].value == f'第{week_number}周':  # 检查 B 列的值是否匹配# 假设 ws 是你的工作表对象,row 是你要填充的行号# fill_cell_color(ws, 'B', row, 'FFFF00')  # 黄色for col in ['A', 'B', 'C', 'D', 'E']:fill_cell_color(ws, col, row, 'FFFF00')  # 黄色break  # 如果找到匹配项,跳出内层循环找到# 删除第一张工作表“总表”first_sheet = wb_copy.worksheets[0]
wb_copy.remove(first_sheet)# 保存修改后的文件
wb_copy.save(copied_file)
print("操作完成!")

调试代码地不提了,都是泪。直接看结果

1、把四类表格文件夹里放四个文件

2、复制第一个文件“运动.xlsx”的所有工作表到另外地文件夹,包含A班级B星期C运动

3、匹配表名”前三个字“(中X班),后读取第2-4个文件对应的表名(前3字),如果一样,就把第3列(C)的内容和列标题到第1个文件中的DEF列

3、美工室+图书探索需要合并在一起”;分隔

4、调整最适合列宽,便于看清所有文字5、填充美工室所属周的黄色底纹,把一行都填充黄色

5、删除第一张总表(就是运动的总表)

代码展示

'''
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 中班4类活动批量'
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} -&gt; {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]max_row = ws.max_rowmax_col = ws.max_column# 查找“个别化”和“美工室”列的索引individualized_col = Nonemeishuoshi_col = Nonefor col in range(1, max_col + 1):column = ws.cell(row=1, column=col).valueif column == "个别化":individualized_col = colelif column == "美工室":meishuoshi_col = colif individualized_col and meishuoshi_col:# 合并“个别化”和“美工室”列的内容for row in range(2, max_row + 1):individualized_value = ws.cell(row=row, column=individualized_col).value or ""meishuoshi_value = ws.cell(row=row, column=meishuoshi_col).value or ""combined_value = f"{meishuoshi_value};{individualized_value}".strip()ws.cell(row=row, column=individualized_col).value = combined_value# 删除“美工室”列ws.delete_cols(meishuoshi_col)else:print(f"Sheet {sheet} does not contain both '个别化' and '美工室' columns")# 自动调整最适合的列宽
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# # 填充颜色
week1 = []
week2 = []# 定义数字和中文数字的列表
numbers = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20']
chinese_numbers = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '二十']# 循环生成 week1 和 week2
for num, chinese in zip(numbers, chinese_numbers):week1.append('第{}{}周'.format(num,chinese))week2.append('{}{}'.format(num, chinese))# 打印结果
print(week1)
print(len(week1))
print(week2)
print(len(week2))
# ['01一', '02二', '03三', '04四', '05五', '06六', '07七', '08八', '09九', '10十', '11十一', '12十二', '13十三', '14十四', '15十五', '16十六', '17十七', '18十八', '19十九', '20二十']
# 20#  定义一个函数来填充单元格颜色
def fill_cell_color(ws, col, row, color):cell = f'{col}{row}'ws[cell].fill = openpyxl.styles.PatternFill(start_color=color, end_color=color, fill_type='solid')# 遍历每一张表格
for sheet_name in wb.sheetnames:#   ws = wb_copy[sheet]ws = wb_copy[sheet_name]# 遍历 C 列所有单元格,如果满足条件则填充颜色for row in range(2, ws.max_row + 1):  # 从第二行开始遍历,因为第一行是标题行cell_value = ws[f'E{row}'].value# 第五、十、十五、二十周“快乐玩色彩”专用活动室     if cell_value is not None:# 读取来的结果取第1-10个字符,10个字符中间有顿号,我希望以顿号切割first_ten_chars = str(cell_value)[1:10]print('1:'+first_ten_chars)# 五、十、十五、二十parts = first_ten_chars.split('、')print(parts)if cell_value:for item in week2:print('0:'+item)# 无论01一、12十二、35三十五,都是从索引2开始提取)chinese_part = item[2:]# print(chinese_part)if chinese_part in parts:  # 检查 C 列的值是否包含 chinese_partweek_number = item[:2]  # 提取数字部分并补零print('1'+week_number)if ws[f'B{row}'].value == f'第{week_number}周':  # 检查 B 列的值是否匹配# 假设 ws 是你的工作表对象,row 是你要填充的行号# fill_cell_color(ws, 'B', row, 'FFFF00')  # 黄色for col in ['A', 'B', 'C', 'D', 'E']:fill_cell_color(ws, col, row, 'FFFF00')  # 黄色break  # 如果找到匹配项,跳出内层循环找到# 删除第一张工作表“总表”first_sheet = wb_copy.worksheets[0]
wb_copy.remove(first_sheet)# 保存修改后的文件
wb_copy.save(copied_file)
print("操作完成!")

最终作品

发年纪群共享

因为室5个班级,正好5周一次,而且20周是整数,所以做起来方便,如果室19周,可能要划定取值范围

http://www.dtcms.com/wzjs/24690.html

相关文章:

  • 聊城b2b网站建攀枝花seo
  • 哪个网站做欧洲旅行比较好百度app关键词优化
  • 凡科网站建设好吉林网络公司
  • 网上申请入团网站泰州seo网络公司
  • 渝北区建设委员会网站网址域名
  • 空压机网站开发公司seo运营人士揭秘
  • 网站如何做免费推广如何做好宣传推广
  • 连云港市网站建设hao123主页
  • 全国电子网站建设资阳市网站seo
  • phpcmsv9网站地图北京学校线上教学
  • 石家庄网站设计什么叫友情链接
  • 菏泽企业做网站东莞网络营销推广软件
  • 51网址还有吗长沙优化网站哪家公司好
  • 制作物流网站原创软文
  • wordpress tao2014seo教程技术整站优化
  • 南海网站建设价格有广告位怎么找广告商
  • 有个人免费网站吗网站seo诊断工具
  • 网站开发介绍费seo自学
  • 朝阳区网站建设世界十大搜索引擎排名
  • 重庆点优建设网站公司吗个人网站推广怎么做
  • 镇江网站建设和优化推广多少钱seo修改器
  • 进行公司网站建设方案seo优化标题
  • 关于京东商城网站建设的实践报告app注册推广平台
  • 网站建设规划设计报告百度影音在线电影
  • 深圳做网站哪家seo狂人
  • 手机网站制作工具推广app的方法和策略
  • 聊城网站建设招聘网络推广渠道
  • 个人可以做网站导航的网站吗网络营销的四种模式
  • 个人网站做打赏流程网站链接提交收录
  • 全椒县建设局网站深圳英文站seo