基于Python生成橫向年度日歷的代碼實(shí)現(xiàn)
技術(shù)選型
calendar模塊:Python 內(nèi)置模塊,用于獲取每個(gè)月的天數(shù)和日期,不用自己計(jì)算平年閏年。openpyxl庫:用于創(chuàng)建和編輯 Excel 文件,支持合并單元格、設(shè)置樣式等操作,生成的文件可直接在 WPS/Excel 中打開。
核心思路
- 動(dòng)態(tài)列寬:每個(gè)月的標(biāo)題合并列數(shù)等于該月的實(shí)際天數(shù)(如 1 月 31 列、2 月 28 列),徹底解決空白單元格問題。
- 嚴(yán)格對(duì)齊:標(biāo)題和日期的起始列完全一致,保證視覺上嚴(yán)絲合縫。
- 樣式統(tǒng)一:設(shè)置統(tǒng)一的字體和對(duì)齊方式,讓生成的日歷更美觀專業(yè)。
import calendar
from openpyxl import Workbook
from openpyxl.styles import Alignment, Font
from openpyxl.utils import get_column_letter
def generate_aligned_calendar(target_year):
"""
生成標(biāo)題與日期嚴(yán)格對(duì)齊的橫向年度日歷
核心修復(fù):每個(gè)月標(biāo)題合并的列數(shù) = 該月實(shí)際天數(shù),無空白單元格
"""
wb = Workbook()
ws = wb.active
ws.title = f"{target_year}年日歷"
# 定義樣式
title_font = Font(bold=True, size=12)
title_align = Alignment(horizontal='center', vertical='center')
date_align = Alignment(horizontal='right', vertical='center')
current_col = 1 # 記錄當(dāng)前起始列,動(dòng)態(tài)累加
for month in range(1, 13):
# 獲取當(dāng)前月份的實(shí)際天數(shù)(關(guān)鍵:用實(shí)際天數(shù)代替固定31)
days_in_month = calendar.monthrange(target_year, month)[1]
end_col = current_col + days_in_month - 1
# 1. 寫入并合并月份標(biāo)題(合并列數(shù) = 該月天數(shù))
month_title = f"{month}月"
ws.merge_cells(start_row=1, start_column=current_col,
end_row=1, end_column=end_col)
title_cell = ws.cell(row=1, column=current_col, value=month_title)
title_cell.font = title_font
title_cell.alignment = title_align
# 2. 寫入日期(從當(dāng)前列開始,連續(xù)寫入1-月末)
for day in range(1, days_in_month + 1):
date_cell = ws.cell(row=2, column=current_col + day - 1, value=day)
date_cell.alignment = date_align
# 更新下一個(gè)月的起始列
current_col = end_col + 1
# 統(tǒng)一調(diào)整列寬
for col in range(1, current_col):
ws.column_dimensions[get_column_letter(col)].width = 2.5
# 保存文件
file_name = f"{target_year}年對(duì)齊版日歷.xlsx"
wb.save(file_name)
print(f"? {target_year}年日歷生成成功!文件:{file_name}")
print(f"?? 修復(fù)效果:標(biāo)題與日期嚴(yán)格對(duì)齊,無空白單元格")
# 調(diào)用示例:生成2026年日歷
if __name__ == "__main__":
generate_aligned_calendar(2026)效果圖

| 需求 | 角色 | 人員 | 工時(shí) | 1月 | ||||||||||||||||||||||||||||||
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | ||||
| 登錄功能 | 項(xiàng)目經(jīng)理 | 小強(qiáng) | 0 | |||||||||||||||||||||||||||||||
| 產(chǎn)品經(jīng)理 | 小明 | 1 | 1 | |||||||||||||||||||||||||||||||
| 開發(fā) | 小龍 | 1 | 1 | |||||||||||||||||||||||||||||||
| 測(cè)試 | 小王 | 0.3 | 0.3 | |||||||||||||||||||||||||||||||
| 注冊(cè)功能 | 項(xiàng)目經(jīng)理 | 小強(qiáng) | 0 | |||||||||||||||||||||||||||||||
| 產(chǎn)品經(jīng)理 | 小明 | 0 | ||||||||||||||||||||||||||||||||
| 開發(fā) | 小龍 | 0 | ||||||||||||||||||||||||||||||||
| 測(cè)試 | 小王 | 0 | ||||||||||||||||||||||||||||||||
| 注銷功能 | 項(xiàng)目經(jīng)理 | 小強(qiáng) | 0 | |||||||||||||||||||||||||||||||
| 產(chǎn)品經(jīng)理 | 小明 | 0 | ||||||||||||||||||||||||||||||||
| 開發(fā) | 小龍 | 0 | ||||||||||||||||||||||||||||||||
| 測(cè)試 | 小王 | 0 | ||||||||||||||||||||||||||||||||
到此這篇關(guān)于基于Python生成橫向年度日歷的代碼實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python生成橫向年度日歷內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Python+Tkinter開發(fā)一個(gè)表格比對(duì)和&整理工具
日常辦公和數(shù)據(jù)處理中,Excel表格是高頻使用的工具,本文將使用Python和Tkinter開發(fā)一個(gè)表格比對(duì)和&整理工具,感興趣的小伙伴可以了解下2025-12-12
Python中的魔法方法__repr__和__str__用法實(shí)例詳解
這篇文章主要介紹了Python中的__repr__和__str__方法,它們分別用于提供對(duì)象的官方字符串表示和用戶友好的字符串表示,通過重寫這兩個(gè)方法,可以自定義對(duì)象的打印輸出,文中通過代碼將用法介紹的非常詳細(xì),需要的朋友可以參考下2025-02-02
Python自動(dòng)化辦公之郵件發(fā)送全過程詳解
這篇文章主要介紹了Python自動(dòng)化辦公之郵件發(fā)送全過程詳解,使用Python實(shí)現(xiàn)自動(dòng)化郵件發(fā)送,可以讓你擺脫繁瑣的重復(fù)性業(yè)務(wù),可以節(jié)省非常多的時(shí),下面我們就來看看具體的操作配置吧2022-01-01
Python安裝本地.whl文件的流程及注意事項(xiàng)
在Python的生態(tài)環(huán)境中.whl文件是一種預(yù)編譯的二進(jìn)制包,用于分發(fā)和安裝Python庫,這篇文章主要給大家介紹了關(guān)于Python安裝本地.whl文件的流程及注意事項(xiàng),文中講解了下載文件、安裝pip、使用pip安裝whl文件、驗(yàn)證安裝以及注意事項(xiàng),需要的朋友可以參考下2024-11-11
基于Python編寫一個(gè)簡(jiǎn)單的http服務(wù)器
這篇文章主要為大家詳細(xì)介紹了如何基于Python編寫一個(gè)簡(jiǎn)單的http服務(wù)器,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-04-04
Pytorch實(shí)現(xiàn)將模型的所有參數(shù)的梯度清0
這篇文章主要介紹了Pytorch實(shí)現(xiàn)將模型的所有參數(shù)的梯度清0,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06
一文解析Python?FastAPI進(jìn)行異常處理的詳細(xì)方法
這篇文章主要為大家詳細(xì)介紹了Python?FastAPI中HTTPException、WebSocketException等常見異常的捕獲與處理技巧,涵蓋從基礎(chǔ)配置到全局異常處理器的完整實(shí)踐,感興趣的小伙伴可以了解下2026-01-01
一文了解Python中NotImplementedError的作用
NotImplementedError是一個(gè)內(nèi)置異常類,本文主要介紹了一文了解Python中NotImplementedError的作用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
python使用tkinter實(shí)現(xiàn)簡(jiǎn)單計(jì)算器
這篇文章主要為大家詳細(xì)介紹了python使用tkinter實(shí)現(xiàn)簡(jiǎn)單計(jì)算器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01

