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

【办公类-54-03】20240828班级点名册模版(双休国定假涂成灰色)

背景需求:

每学期开学要做5个月的点名册

每天记录来园人员的符号是“○”和“|”,遇到双休日,为了避免写错,就要手动划线,大量的线条,看上去不美观,而且会影响财务老师统计。

在营养员的每周人数统计表里,我尝试了节日、假日的格子涂上灰色。用同样的方法设计202409-202501的点名表,确保每个假日、双休日,都被填上灰色。
【办公类-54-02】20240827营养员《每周人数统计表》(双休国定假涂成灰色)-CSDN博客文章浏览阅读1.3k次,点赞41次,收藏16次。【办公类-54-02】20240827营养员《每周人数统计表》(双休国定假涂成灰色)https://blog.csdn.net/reasonsummer/article/details/141610345

设计过程用了5个小时,今天来不及具体写,先占个坑位。

代码展示

'''
把原来的点名表标签、日期更改,根据日期添加灰色列
星火讯飞阿夏
20240828
'''
'''1、把原来的点名表标签、日期月份更改'''

# ˼·
# ��ȡÿһ����ǩ���ѱ�ǩֵ�����޸�
# ��W3�ij�������������
# �ѱ�ǩֵ��-2������д��AB3


import openpyxl
from datetime import datetime, timedelta
import time

import openpyxl
from openpyxl.styles import PatternFill

import openpyxl
from openpyxl.styles import PatternFill
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\开学点名册批量制作'
# ��ȡ123.xlsx�ļ�
workbook = openpyxl.load_workbook(path+r'\01原始点名表.xlsx')

print('1.原版点名册标签日期更改')
# 读取所有工作表标签名称
sheet_names = workbook.sheetnames
print(sheet_names)
# ['2上', '2下', '3上', '3下', '4上', '4下', '5上', '5下', '6上', '6下']


# 获取新日期
from datetime import datetime, timedelta

start_date = datetime(2024, 9, 1)
end_date = datetime(2025, 1, 31)
date_set = set()

while start_date <= end_date:
    date_set.add(start_date.strftime('%Y-%m'))
    start_date += timedelta(days=1)

date_list =[date for date in list(sorted(date_set)) for _ in range(2)]# 去掉重复,排序
print(date_list)
# ['2024-09', '2024-09', '2024-10', '2024-10', '2024-11', '2024-11', '2024-12', '2024-12', '2025-01', '2025-01']


# 组合新的标签名字
new_sheet_names = []
for n in range(len(sheet_names)):
    new_name = date_list[n]+sheet_names[n][-1:]
    new_sheet_names.append(new_name)
print(new_sheet_names)
# ['2024-09上', '2024-09下', '2024-10上', '2024-10下', '2024-11上', '2024-11下', '2024-12上', '2024-12下', '2025-01上', '2025-01下']

# 替换标签
for old_name, new_name in zip(sheet_names, new_sheet_names):
    workbook[old_name].title = new_name

print('2.更改日期和双休日灰色')

sheet_names = workbook.sheetnames
n=0
# ����ÿ��������
for sheet_name in sheet_names:
    print(sheet_name)
    # ��ȡ��ǰ������
    sheet = workbook[sheet_name]   
    
    # ������������д��'AB3'��Ԫ��
    sheet['AB3'] = new_sheet_names[n][-3:-1]
    sheet['W3'] = new_sheet_names[n][:4]  
    n+=1







# 创建一个灰色填充样式
gray_fill = PatternFill(start_color='D3D3D3', end_color='D3D3D3', fill_type='solid')

# 读取第一张表格(上半月)上半月没有16,但是为了表格好看,把16位置也加灰,9,11没有31日
xx=[[1,7,8,15,16],[16,17,21,22,28,31],\
[1,2,3,4,5,6,7,13,16],[19,20,26,27],\
[2,3,9,10,16],[16,17,23,24,30,31],\
[1,7,8,14,15,16],[21,22,28,29],\
[1,4,5,11,12,16],[18,19,20,21,22,23,24,25,26,27,28,29,30,31]]

for bg in range(0,len(xx)):  # 10张表
    
    sheet = workbook.worksheets[bg]
    if bg%2==0:        # 如果工作表的索引数字是双数,就输入原数
        date=xx[bg]    # [7,8,15]
        for d in date:  # 7
            # 遍历C5到C42的单元格并填充灰色
            for row in range(4, 43):     # 不变
                for col in range(d*2+1, d*2+3):   # 列
                    cell = sheet.cell(row=row, column=col)
                    cell.fill = gray_fill
    else:  # 如果工作表的索引数字是单,就把原数-15, 下月的表从16开始,等于上月表的1,所以需要减去15才能正确填充灰色
        date=xx[bg]    # [7,8,15]
        for d in date:  # 7
            # 遍历C5到C42的单元格并填充灰色
            for row in range(4, 43):     # 不变
                for col in range((d-15)*2+1, (d-15)*2+3):   # 列
                    cell = sheet.cell(row=row, column=col)
                    cell.fill = gray_fill

# 保存修改后的工作簿
workbook.save(path+r'\2024年9月点名册模版.xlsx')

后续再解析表格制作过程。


http://www.kler.cn/a/282097.html

相关文章:

  • 【视觉SLAM】2-三维空间刚体运动的数学表示
  • Spring Boot 接口防重复提交解决方案
  • 探索Python网络请求新纪元:httpx库的崛起
  • 场景营销在企业定制开发 AI 智能名片 S2B2C 商城小程序中的应用与价值
  • aws中AcmClient.describeCertificate返回值中没有ResourceRecord
  • 使用win32com将ppt(x)文件转换为pdf文件
  • 网络层 I(网络层的功能)【★★★★★★】
  • wpf prism 《1》、区域 、模块化
  • 2024 年顶级 Flutter UI 框架和库
  • JAVA基础之二-面向对象简述
  • UE5学习笔记16-游戏模式中的一些事件,如何改变网格体和摄像头的碰撞
  • MosaicML-面向生成式AI的机器学习平台
  • 仅利用一维数组实现等值线图效果(附完整代码)
  • TeamTalk消息服务器学习
  • Nuxt3入门:介绍、项目安装和了解视图(第一节)
  • 【Android】Glide模块工作原理
  • 2024最全网络安全工程师面试题(附答案),金九银十找工作必看!
  • CARLA Drone: 首个实现从不同空中视角进行单目3D目标检测,并提供数据集
  • 保证MQ的高可用性:RabbitMQ为例
  • 后端开发刷题 | 面试篇4
  • 合合信息acge模型获C-MTEB第一,文本向量化迎来新突破
  • Git 的基本使用
  • 【js】箭头函数和普通函数在this指向的区别
  • 深入理解DPO(Direct Preference Optimization)算法
  • MATLAB发票识别系统
  • 【Material-UI】Rating组件中的Rating precision属性