【办公类-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')
后续再解析表格制作过程。