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

背景需求:

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

【办公类-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.mfbz.cn/a/481122.html

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

相关文章

部署prometheus 监控k8s集群

目录 1、主机清单 2、拉取镜像 3、服务安装 4、安装prometheus-operator 5、查看custom metrics api 6、获取prometheus端口 7、将 alertmanager-main 、grafana、prometheus-k8s的端口暴露出来 8、再次查看prometheus端口 9、浏览器访问IP:31940 部署k8集群…

【Linux】线程的概念{虚拟地址堆区细分/缺页中断/页/初识线程/创建线程/优缺点}

文章目录 1.前导知识1.1 虚拟地址空间的堆区1.2 缺页中断1.3ELF文件格式1.4页/页框/页帧/页表/MMU1.5虚拟地址到物理地址 2.初识Linux线程2.1之前所学的进程2.2线程的引入2.3如何理解线程2.4如何理解轻量级进程 3.创建线程3.1pthread_create()函数3.2程序测试3.3Makefile怎么写…

Ps:色彩平衡

色彩平衡 Color Balance命令可改变阴影、中间调、高光中的颜色平衡,从而改善图像的整体色彩表现或为图像创造特定的氛围。 Ps菜单:图像/调整/色彩平衡 Adjustments/Color Balance 快捷键:Ctrl B Ps菜单:图层/新建调整图层/色彩平…

飞桨ONNX推理部署初探

ONNX,全称Open Neural Network Exchange(开放神经网络交换),是一个用于表示深度学习模型的标准,它定义了一组与环境、平台均无关的标准格式。这使得不同的人工智能框架,如飞桨、MXNet等,可以采用…

【Vue】Vue集成Element-UI框架

🙋‍ 一日之际在于晨 ⭐本期内容:Vue集成Element-UI框架 🏆系列专栏:从0开始的Vue之旅 文章目录 Element-UI简介安装Element-UInpm安装CDN安装 引入Element-UI测试是否引入成功总结 Element-UI简介 Element-UI官网:点…

划线铸铁平台是怎样进行人工采刮的——北重

划线铸铁平台是一种用于进行平整和划线的工具。它通常由铸铁制成,表面平整且耐用。人工采刮是一种在平台上使用刮刀进行刮擦的方法,以平整和划线。 以下是人工采刮的步骤: 1. 准备平台:确保划线铸铁平台表面清洁,没有…

多级页表查询

说明一下这个三级页表的查询,会需要上面的L2,L1,L0 如果在二级页表level就是2,PGSHIFT是12,那么就是往左移129*2位置,在&9bit就得到L2,其他以此类推 也表查询,首先有跟页表的地址pagetable,…

【计算机视觉】Gaussian Splatting源码解读补充(一)

本文旨在补充gwpscut创作的博文学习笔记之——3D Gaussian Splatting源码解读。 Gaussian Splatting Github地址:https://github.com/graphdeco-inria/gaussian-splatting 论文地址:https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/3d_gauss…

JavaWeb -- HTTP -- WEB服务器TOMCAT

一.HTTP介绍: HTTP(Hyper Text Protocol) 实际上是一种超文本传输的协议,规定了浏览器跟服务器之间的一些数据传输的规则 例如B/S 对于浏览器的请求,以及相应服务器的响应,都必须依靠这种协议,规范,才能够彼此之间相互 理解 HTTP的协议特点: 1.基于TCP协议: 面向连接 更加安全…

抖音视频无水印爬虫下载工具|视频关键词批量采集软件

抖音视频批量下载工具 最新推出的抖音视频批量下载工具,针对市面上单个视频链接提取不方便的问题进行了全新设计,不仅可以通过单个视频链接提取,还可通过关键词进行视频搜索,实现批量和有选择性的提取功能。 操作说明 您可以通过…

牛客题霸-SQL篇(刷题记录二)

本文基于前段时间学习总结的 MySQL 相关的查询语法,在牛客网找了相应的 MySQL 题目进行练习,以便加强对于 MySQL 查询语法的理解和应用。 由于涉及到的数据库表较多,因此本文不再展示,只提供 MySQL 代码与示例输出。 以下内容是…

基于ssm的音乐视频网站系统(可听音乐和看视频+数据库+报告+免费远程调试

项目介绍: 基于ssm的音乐视频网站系统(可听音乐和看视频)。Javaee项目,ssm项目。采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringMvc Myba…

sd卡受损怎么恢复数据,sd卡受损了里面的数据怎么办

sd卡受损怎么恢复数据?听说你的SD卡出问题了?失去珍贵数据,简直就像是失去了一段珍贵的回忆,但别灰心,我们来解决这个问题!首先,我得说,SD卡受损是很常见的情况,可能是不小心摔了一下、插拔不当,或者是遇到了某种不可抗力的情况。sd卡受损了里面的数据怎么办?幸运的…

Linux--Flappy_bird实现

代码实现&#xff1a; #include<stdio.h> #include<curses.h> #include<signal.h> #include<sys/time.h> #include<stdlib.h>#define BIRD #define BLANK #define PIPE /**定义管道结构体**/ typedef struct Pipe {int x;//列int y;//横struc…

鸿蒙一次开发,多端部署(九)应用市场首页

本小节将以应用市场首页为例&#xff0c;介绍如何使用自适应布局能力和响应式布局能力适配不同尺寸窗口。 页面设计 一个典型的应用市场首页的UX设计如下所示。 观察应用市场首页的页面设计&#xff0c;不同断点下的页面设计有较多相似的地方。 据此&#xff0c;我们可以将页…

需求:JSON数据显示null值或者不显示null值

使用hutool的工具类 import cn.hutool.json.JSON; import cn.hutool.json.JSONConfig; import cn.hutool.json.JSONUtil;public class Main {public static void main(String[] args) {String sss "{\"1\":\"a\",\"2\":null}";// 不…

【算法】子集(LIS最长上升子序列)

文章目录 题目输入描述输出描述示例分析思路最长递增子序列dp解法&#xff08;2/10&#xff09;binarySearch 贪心&#xff08;AC&#xff09; 题目 小强现在有 n n n个物品&#xff0c;每个物品有两种属性 x i x^i xi和 y i y^i yi。他想要从中挑出尽可能多的物品满足以下条…

Bootloader/IAP零基础入门(1.0) —— 设计一个Bootloader引导进入APP的程序,不含中断向量偏移

前言 &#xff08;1&#xff09;如果有嵌入式企业需要招聘湖南区域日常实习生&#xff0c;任何区域的暑假Linux驱动/单片机/RTOS的实习岗位&#xff0c;可C站直接私聊&#xff0c;或者邮件&#xff1a;zhangyixu02gmail.com&#xff0c;此消息至2025年1月1日前均有效 &#xff…

重磅消息!《大模型面试宝典》(2024版) 正式发布!

2022 年11月底&#xff0c;OpenAI 正式推出 ChatGPT &#xff0c;不到两个月的时间&#xff0c;月活用户就突破1亿&#xff0c;成为史上增长最快的消费者应用。 目前国内已发布的大模型超过200个&#xff0c;大模型的出现彻底改变了我们的生活和学习方式。 现在只要你想从事 A…

优化选址问题 | 模拟退火算法求解物流选址问题含Matlab源码

目录 问题代码问题 模拟退火算法(Simulated Annealing, SA)是一种概率性的全局优化算法,用于求解大规模组合优化问题。在物流选址问题中,模拟退火算法可以用来寻找成本最低、效率最高的仓库或配送中心位置。下面是一个简化的模拟退火算法求解物流选址问题的描述,并附带有…
最新文章