【办公类-16-07-08】“2023下学期 大班户外游戏2(做成打印用的的贴墙版样式--A4横版撑满)”(python 排班表系列)

news2024/12/24 10:06:31

背景需求:

运用代码做出了中班每个班级用的户外游戏(新版)的表格(包含有场地的贴墙版和无场地的贴周计划版)

【办公类-16-07-07】“2023下学期 大班户外游戏2(有场地和无场地版,每天不同场地)”(python 排班表系列)-CSDN博客文章浏览阅读746次,点赞22次,收藏17次。【办公类-16-07-07】“2023下学期 大班户外游戏2(有场地和无场地版,每天不同场地)”(python 排班表系列)https://blog.csdn.net/reasonsummer/article/details/136891691

其中(有场地贴墙版)是游戏内容+场地的写法

表格问题:

1、生成的贴墙板没有标题,第一眼看上去不知道是几班的、也不知道是什么内容

2、既然是贴墙用的,最好就是撑满A4横版整页,我应该把贴墙的安排内容全部补全。

最终效果手动制作

以下是我手动选择标签,批量添加标题(字体、大小,行距),增加框线,增加行距的结果。

表格参数

根据以上的表格样式,用AI对话大师写一段代码,以下内容就是修改“贴墙表”的格式用的

代码设计



'''
中班6个班级 2023学年下学期中班户外游戏安排_有场地和无场地 两个版本
(6个班级 每周每天换一个场地5天,)
有场地版的格式改成撑满A4横版的样式(有标题、有黑色框线、有列宽、行高设置)
作者:阿夏
时间:2024年3月22日
'''

# import sys
# sys.path.append('/path/to/openpyxl')

import sys
import random
import xlrd
import xlwt
from openpyxl import load_workbook

import time
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\周计划'


# '''班主任贴周计划用的(按班级分类)'''
weekweek=19
# int(input('共有几周?(如19周 20)\n'))
# aaa=int(input('1、需要场地、2、不要场地\n'))

for aaa in [1,2]:
    print('---------第1步:制作每个班级的游戏的总表------')

    # 本学期:中1,中2,中3,中4,中5,中7,中8,中9班,其中6班空缺,一共有8个中班
    gradenum=[]
    for g in range(2,8):
        gradenum.append('中{}班'.format(g))
    print(gradenum)
    # gradenum.insert(0, gradenum.pop())
    print(len(gradenum))#     
    # # ['2','3','4','5','6','7']

    L8=[]# 班级数列
    for b in range(19):
        for d in gradenum:        
            L8.append(d)
    print(L8)
    print(len(L8))

    # 制作19*5*6个元素,以便替换(备注)内容
    L1=[]# 班级
    for b in range(19):
        for d in gradenum:
            for c in range(5):
                L1.append(d)
    print(L1)
    print(len(L1))
    # 570


   
        # # print('---------第2步:制作六类游戏的五天列表------')  
    
    ts =19*5
    L=[]# 班级
    L11=[]
    L3=[]  
    L2=[]
    L4=[]
    
    # 这里是8个活动室游戏活动室,因为后面有递进,所以把最后一个 08,放到01前面,这样摆放后面才会正确)
    L3=['美术游戏(滑梯)','角色游戏','沙水游戏(中庭)','表演游戏','建构游戏(三楼露台)','角色游戏',]

        # 将1移动到5的后面
    L3.append(L3.pop(0))

    # 循环提取,获得5天一组的基础
    L11=[]
    for i in range(6):
        # 将5移动到1的前面
        L3.insert(0, L3.pop())
        # print(L3)
        L11.append(L3[0:5])
    # print(L11)
       
    # ['美术游戏(滑梯)', '角色游戏', '沙水游戏(中庭)', '表演游戏', '建构游戏(三楼露台)']
    # ['角色游戏', '美术游戏(滑梯)', '角色游戏', '沙水游戏(中庭)', '表演游戏']
    # ['建构游戏(三楼露台)', '角色游戏', '美术游戏(滑梯)', '角色游戏', '沙水游戏(中庭)']
    # ['表演游戏', '建构游戏(三楼露台)', '角色游戏', '美术游戏(滑梯)', '角色游戏']
    # ['沙水游戏(中庭)', '表演游戏', '建构游戏(三楼露台)', '角色游戏', '美术游戏(滑梯)']
    # ['角色游戏', '沙水游戏(中庭)', '表演游戏', '建构游戏(三楼露台)', '角色游戏']

    # 6种基本形体,遍历20次
    L12=[]
    for o1 in range(20):
        for o2 in L11:        
            L12.append(o2)
    # print(L12)
    # print(len(L12))
    # 120


    

    L13=[]
    for i in range(19):
        # 将5移动到1的前面
        
        L13.append(L12[i:i+6])
    print(L13)

    L6=[] 
    for b1 in L13:
        for b2 in b1: 
            for b3 in b2:
                L6.append(b3)
    
    print(L6)
    print(len(L6))

    # # 根据班级,增加角色、表演旁边的场地
    # # 中2班角色游戏、表演游戏场地——树屋                         中3班角色游戏、表演游戏场地——小农场
    # # 中4班角色游戏、表演游戏场地——中1班南门口                 中5班角色游戏、表演游戏场地——中3班南门口
    # # 中6班角色游戏、表演游戏场地——天台                         中7班角色游戏、表演游戏场地——天台


    L5=[]
   
    coom=['2','3','4','5','6','7']
    room=['树屋','小农场','大1班南门','大3班南门','天台','天台',]
    print(len(L1))
    print(len(L6))
    for cc in range(len(L6)):    
        if L6[cc]=='角色游戏' or L6[cc]=='表演游戏': 
            # print(L6[cc])         
            for kk in range(len(room)) :
                if L1[cc]=='中{}班'.format(coom[kk]) :
                    L5.append('{}({})'.format(L6[cc],room[kk])) 
                          
             
        else:
            L5.append(L6[cc])

           
    print(L5)
    print(len(L5))

    L7=[]

    for ff in L5:
        if aaa==1:
            L7.append(ff)        # 美术活动(操场)
        if aaa==2:
            L7.append(ff[:4])      # 美术活动
    print(L7)
    print(len(L7))
    # 570/5=114

    # #     print('---------第2步:如果一周有5天(不考虑跳过假日)------')

        # 限制19周的     
    for j in range(0,int(len(L7)/5)):#第1周
        L2.append(L7[j*5:j*5+5])
    print(L2)
    print(len(L2))    


    print('---------第4-1步:xls写入)------') 
    workbook = xlwt.Workbook()# 新建xls工作簿
    sheet = workbook.add_sheet("Sheet")# 新建xls工作簿的工作表的名字是sheet 

    print('---------第4-2步:第1行 写入 星期一等)------')    
    weeks = ['班级','周次','星期一','星期二','星期三','星期四','星期五',]
    # weeks=['周次','美术游戏','角色游戏','建构游戏','表演游戏','沙水游戏','角色游戏']
    week = len(weeks) 

    col=0
    for d in range(0, len(weeks)):
        sheet.write(0,col,weeks[d])         # 因为只有一行,所以就用有两种写法(enumerate和这种)
        col+= 1 



    print('---------第4-3步:第2列写入周次)------')    # 第0列 写入“第1周、第2周、第3周……第21周
    dates=[]
    # 制作第一列的所有文字
    for i in range(1,int(weekweek+1)):
        for r in range(len(gradenum)):
            n="第{}周".format('%02d'%i)    # 用遍历方法获得“第1周、第2周、第21周”字样,
            dates.append(n)          # 添加到列表    s
    print(dates)  
    print(len(dates))  
    #114 

    # 写入周次
    row=1
    for d in range(0, len(dates)):
        sheet.write(row, 1, dates[d])         # 这里enumerate不能用,因为只有一列,所以就用
        row += 1    

    print('---------第4-3步:第1列写入班级)------') 
    # 写入班级列 L=班级列
    row=1
    for h in range(0, len(L8[:len(dates)])):        # 只要班级列表的前114个        
        sheet.write(row,0,L8[h])         # 因为只有一行,所以就用有两种写法(enumerate和这种)
        row += 1      


    print('---------第4-5步:第3-9列写入游戏内容一周五次相同)------') 


    row=1    
    #  写入游戏内容列 L2=游戏内容一周五个
    for i in range((len(L2))):         # 遍历21组[]的总数
        for col,item in enumerate(L2[i],2):            # L2[i]=表格内的内容=item,索引数字=col
            sheet.write(row,col,item)  # row,col,item 行=1、列=索引数字、内容=表格内容 写入第一行第一列
        row += 1 
    #
            

    print('---------第5步:xls保存N份工作簿(每份一页)------')             
    try:
        workbook.save(path+r"\测试.xls")    # 新建保存 只能xls
        print('计划生成成功')
    except e:
        print('失败...')
        print(e)

    # print('---------第6步:把1份xls按照班级,分类成N个不同的工作表内(班主任贴周计划用)------')      
    # https://blog.csdn.net/xo3ylAF9kGs/article/details/135856653

    # 切割成同表
    import pandas as pd
    import os

    df = pd.read_excel(path+r'\测试.xls')
    if aaa==1:
        writer = pd.ExcelWriter(path+r'\20240310(贴墙 有场地)中班新版户外游戏(班主任用).xlsx')
    if aaa==2:
        writer = pd.ExcelWriter(path+r'\20240310(贴周计划 无场地)中班新版户外游戏(班主任用).xlsx')
        
    df.to_excel(writer, sheet_name='Sheet', index=False)

    for j in df['班级'].unique():
        df[df['班级'] == j].to_excel(writer, sheet_name=j+'户外游戏', index=False)

    writer.save()


# # 删除过渡EXCLE
os.remove(path+r'\测试.xls')


from openpyxl import load_workbook
from openpyxl.styles import Alignment, Font, Border, Side


# 读取Excel文件
excel_file = path+r'\20240310(贴墙 有场地)中班新版户外游戏(班主任用).xlsx'
workbook = load_workbook(excel_file)

# 选择第2-5张工作表
for sheet_name in workbook.sheetnames[1:]:  # 第2-5张工作表
    sheet = workbook[sheet_name]


    

    # 遍历工作表名称,并提取前三个字
    
    first_three_letters = sheet_name[:3]
    

        
    # 在每张工作表第一行前面插入一行
    sheet.insert_rows(1)
    
    # 合并新的第一行的1-7列并设置样式
    sheet.merge_cells("A1:G1")
    cell = sheet["A1"]
    cell.value = "{} 户外游戏含场地(新版 贴墙)2024.3".format(first_three_letters)
    cell.alignment = Alignment(horizontal='center',vertical='center')
    cell.font = Font(name='黑体', size=20)
    sheet.row_dimensions[1].height = 42
    
    # 设置边框和行高
    thin_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin'))
    for row in sheet.iter_rows(min_row=2, max_row=21):
        for cell in row:
            cell.border = thin_border
            sheet.row_dimensions[cell.row].height = 21
    
   # 设置列宽
    for col in range(1, 9):
        if col in range(1, 3):  # 第1-2列列宽为8.43,row=2 第一行已经合并不存在,从第2行开始添加列宽
            sheet.column_dimensions[sheet.cell(row=2, column=col).column_letter].width = 8.43
        else:  # 第3-8列列宽为23
            sheet.column_dimensions[sheet.cell(row=2, column=col).column_letter].width = 21


    # 设置页面方向为横向打印
    sheet.page_setup.orientation = sheet.ORIENTATION_LANDSCAPE

    # 选择要设置对齐方式的单元格范围,例如A1到B2
    cell_range = sheet['A1:G21']

    # 设置单元格文字上下左右居中
    alignment = Alignment(horizontal='center', vertical='center', wrap_text=True)
    for row in cell_range:
        for cell in row:
            cell.alignment = alignment

# 保存修改后的Excel文件
workbook.save(path+r'\20240310(贴墙 有场地)中班新版户外游戏(班主任用).xlsx')
print("处理完成,已保存贴墙版户外游戏安排")





生成两个xlsx

每个贴墙含场地表格都是A4横版撑满页面

打印正好A4横版

每页标题上的班级与标签的前3个字相同

终于打通了户外游戏场地表格的代码全流程,能应对各种场地调整了(* ̄︶ ̄)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python爬虫之xpath+多进程爬取百度贴吧实战

文章目录 抓取百度贴吧的某一个帖子的评论内容前言先查看贴吧的robots.txt页面结构分析评论者头像,用户抓取评论内容的抓取评论下回复内容的抓取 源码实现贴吧抓取过程源码实现多进程的实现 抓取百度贴吧的某一个帖子的评论内容 前言 本项目实战是用来学习用&#…

uniapp自定义导航栏左中右内容和图标,以及点击事件

uniapp自定义导航栏左中右内容和图标&#xff0c;以及点击事件 效果&#xff1a; 页面&#xff1a; <view class"navigation-bar"><view class"navigation-bar-left" click"navigateBack"><u-icon name"arrow-left"…

曲面斑马纹分析

曲面斑马纹分析是一种在曲面设计和质量检测中广泛使用的技术&#xff0c;其基本原理是利用明暗相间的光线照射到物体表面经反射产生的纹路来评估曲面的连续性和光顺性。这些斑马纹不仅美观&#xff0c;更重要的是它们能直观地展示曲面上的几何特性&#xff0c;帮助设计师和工程…

C++入门笔记开源【研究生3年+7W字】

博主研究生3年时间积累了一个C的基础知识文档&#xff0c;共计7W字。几乎把常用的各种语法和接口都包含进去了。一个文档&#xff0c;markdown格式的&#xff0c;可以当做工具书来使用。由于本文档内容较多&#xff0c;直接复制到csdn会各种卡&#xff0c;而且图片链接不对&…

【循环神经网络rnn】一篇文章讲透

目录 引言 二、RNN的基本原理 代码事例 三、RNN的优化方法 1 长短期记忆网络&#xff08;LSTM&#xff09; 2 门控循环单元&#xff08;GRU&#xff09; 四、更多优化方法 1 选择合适的RNN结构 2 使用并行化技术 3 优化超参数 4 使用梯度裁剪 5 使用混合精度训练 …

C++剑指offer与高频面试题源码解答与分析

这是博主在当初秋招刷题时候记录的剑指offer第二版以及一些高频题的C源码和解法分析&#xff0c;可以说把这上面的题练好了面试不虚&#xff0c;最后也顺利帮助我拿下baidu ali meituan等多家大厂offer。整篇文章写了大概5W个字&#xff0c;也是积累了很长一段时间的作品&#…

数据分析案例-国际象棋顶级棋手数据可视化分析(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

C++的内存模型

大家好&#xff1a; 衷心希望各位点赞。 您的问题请留在评论区&#xff0c;我会及时回答。 内存分区模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域。 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理。 全局区&#xff1a;存放全局变…

是时候来唠一唠synchronized关键字了,Java多线程的必问考点!

写在开头 在之前的博文中&#xff0c;我们介绍了volatile关键字&#xff0c;Java中的锁以及锁的分类&#xff0c;今天我们花5分钟时间&#xff0c;一起学习一下另一个关键字&#xff1a;synchronized。 synchronized是什么&#xff1f; 首先synchronized是Java中的一个关键字…

机器学习-06-无监督算法-01-划分聚类Kmeans算法

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中无监督算法&#xff0c;包括划分聚类等。 参考 数据分析实战 | K-means算法——蛋白质消费特征分析 欧洲48国英文名称的来龙去脉及其国旗动画 Kmeans在线动态演示 本门课程的目标 完成一个特定行业的…

基于modbus TCP实现EPICS与西门子S7 1200系列1215C PLC的通信

PLC介绍 西门子系列PLC在国内的市场占比第一&#xff0c;1200系列中小型PLC&#xff0c;因其众多的产品序列、强大的通讯功能和丰富扩展模块&#xff0c;被使用在工业生产、自动化生产线、智能制造、机器人等各行各业。根据CPU的供电电源的型号和数字量输出的类型&#xff0c;…

科技革新背后:码垛机器人在不同领域的实践应用

随着科技的进步&#xff0c;机器人技术已经渗透到各个行业之中&#xff0c;成为提高生产效率、减少人工成本的重要工具。码垛机器人作为自动化技术的杰出代表&#xff0c;其在各个行业中的应用场景日益广泛&#xff0c;从食品饮料到化工产品&#xff0c;再到物流仓储&#xff0…

矩阵计算-线性系统和 LU 分解

一、三角系统 …… 二、高斯消元法 …… 三、LU分解--直接三角分解法 求解线性方程Axb&#xff1a; 参考视频&#xff1a;【数值分析】矩阵LU三角分解| 速成讲解 考试宝典_哔哩哔哩_bilibili 令ALU&#xff0c;其中L是单位下三角矩阵&#xff08;对角线上元素都是1&#xff…

探秘国内IP代理购买:全面解析与实用建议

随着网络空间的不断发展和扩大&#xff0c;越来越多的用户需要在互联网上获取访问其他国家或地区网站的需求。而为了实现这一目的&#xff0c;使用IP代理服务成为了一种常见的方式。在国内&#xff0c;选择合适的IP代理服务商并购买适合自己需求的IP代理已成为许多人关心的问题…

JavaScript 权威指南第七版(GPT 重译)(二)

第四章&#xff1a;表达式和运算符 本章记录了 JavaScript 表达式以及构建许多这些表达式的运算符。表达式 是 JavaScript 的短语&#xff0c;可以 评估 以产生一个值。在程序中直接嵌入的常量是一种非常简单的表达式。变量名也是一个简单表达式&#xff0c;它评估为分配给该变…

mongodb文档数据建模

基础建模 内嵌方法和数组方完成关系表述 内嵌一对一关系建模 数组内嵌一对N 关系建模 数组内嵌对象多对多关系建模 文档模型设计之二&#xff1a;工况细化 join 查询 不支持外键 设计模式集锦 版本迭代加schema_version 字段 频繁写入改为时间区间写入 聚合变预聚合方式 采用…

银行数字人民币系统应用架构设计

2019年10月&#xff0c;01区块链联合数字资产研究院发布了《人民币3.0&#xff1a;中国央行数字货币运行框架与技术解析》&#xff0c;从数字货币界定和人民币发展历程出发&#xff0c;区分了央行数字货币与比特币、移动支付等的区别&#xff0c;全面介绍了央行数字货币的发展历…

【Linux实践室】Linux用户管理实战指南:新建与删除用户操作详解

&#x1f308;个人主页&#xff1a;聆风吟_ &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 &#x1f514;Linux创建用户命令2.1.1 知识点讲解2.1.2 案…

IDEA调优-四大基础配置-编码纵享丝滑

文章目录 1.JVM虚拟机选项配置2.多线程编译速度3.构建共享堆内存大小4.关闭不必要的插件 1.JVM虚拟机选项配置 -Xms128m -Xmx8192m -XX:ReservedCodeCacheSize1024m -XX:UseG1GC -XX:SoftRefLRUPolicyMSPerMB50 -XX:CICompilerCount2 -XX:HeapDumpOnOutOfMemoryError -XX:-Omi…

matlab和stm32的安装环境。能要求与时俱进吗,en.stm32cubeprg-win64_v2-6-0.zip下载太慢了

STM32CubeMX 6.4.0 Download STM32CubeProgrammer 2.6.0 Download 版本都更新到6.10了&#xff0c;matlab还需要6.4&#xff0c;除了st.com其他地方都没有下载的,com.cn也没有。曹 还需要那么多固件安装。matlab要求制定固件位置&#xff0c;然后从cubemx中也指定…