【办公类-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')

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值