from openpyxl import Workbook
from openpyxl.styles import Font, Alignment, PatternFill, Border, Side
from openpyxl.utils import get_column_letter

wb = Workbook()
ws = wb.active
ws.title = "中国传统节日"

# 表头
headers = ["序号", "节日名称", "日期", "节日类型", "主要习俗", "简介"]
ws.append(headers)

# 样式设置
header_fill = PatternFill(start_color="C00000", end_color="C00000", fill_type="solid")
header_font = Font(bold=True, color="FFFFFF", size=12)
header_alignment = Alignment(horizontal="center", vertical="center", wrap_text=True)

thin_border = Border(
    left=Side(style='thin'),
    right=Side(style='thin'),
    top=Side(style='thin'),
    bottom=Side(style='thin')
)

# 设置表头样式
for col_num, header in enumerate(headers, 1):
    cell = ws.cell(row=1, column=col_num)
    cell.fill = header_fill
    cell.font = header_font
    cell.alignment = header_alignment
    cell.border = thin_border

# 节日数据
festivals = [
    [1, "春节", "农历正月初一", "传统节日 / 法定假日", "贴春联、放鞭炮、吃年夜饭、拜年、发红包、守岁", "中国最重要、最隆重的传统节日，俗称\"过年\"，标志着农历新年的开始，承载着辞旧迎新、祈福纳祥的美好愿望。"],
    [2, "元宵节", "农历正月十五", "传统节日", "赏花灯、吃元宵/汤圆、猜灯谜、舞龙舞狮", "春节年俗中最后一个重要节令，又称上元节、灯节。一元复始，万象更新，寓意团团圆圆。"],
    [3, "龙抬头", "农历二月初二", "传统节日", "剃龙头、吃龙须面、祭灶、熏虫", "又称春耕节、农事节。传说此时龙王抬头，雨水渐多，象征着春回大地、万物复苏。"],
    [4, "上巳节", "农历三月初三", "传统节日", "踏青、祓禊、曲水流觞、吃荠菜煮鸡蛋", "古代举行\"祓除畔浴\"活动中最重要的节日，也是古代的情人节，王羲之《兰亭集序》即写于此日。"],
    [5, "清明节", "公历4月4日或5日", "传统节日 / 法定假日", "扫墓祭祖、踏青郊游、放风筝、插柳", "既是自然节气点，也是传统节日。慎终追远、缅怀先人，兼具自然与人文两大内涵。"],
    [6, "端午节", "农历五月初五", "传统节日 / 法定假日", "吃粽子、赛龙舟、挂艾草菖蒲、佩香囊、饮雄黄酒", "纪念爱国诗人屈原，是中国首个入选世界非物质文化遗产的节日，寓意驱邪避疫、祈求安康。"],
    [7, "七夕节", "农历七月初七", "传统节日", "乞巧、拜织女、吃巧果、穿针引线", "源于牛郎织女传说，又称乞巧节、女儿节。是中国最具浪漫色彩的传统节日，象征忠贞爱情。"],
    [8, "中元节", "农历七月十五", "传统节日", "祭祖、放河灯、焚纸锭、祭祀土地", "俗称鬼节、七月半，是追怀先人的一种文化传统节日，与除夕、清明、重阳并称中国传统四大祭祖节日。"],
    [9, "中秋节", "农历八月十五", "传统节日 / 法定假日", "赏月、吃月饼、饮桂花酒、燃灯、观潮", "中国第二大传统节日，又称团圆节。月圆人团圆，寄托思念故乡、思念亲人之情，祈盼丰收与幸福。"],
    [10, "重阳节", "农历九月初九", "传统节日", "登高望远、赏菊、插茱萸、吃重阳糕、敬老", "又称登高节、敬老节。\"九九\"谐音\"久久\"，有长久长寿之意，1989年起定为\"中国老年节\"。"],
    [11, "冬至", "公历12月21日~23日", "传统节日 / 节气", "吃饺子（北方）、吃汤圆（南方）、祭祖、数九", "白昼最短、黑夜最长的一天，被视为冬季的大节日，有\"冬至大如年\"之说，标志数九寒天开始。"],
    [12, "腊八节", "农历腊月初八", "传统节日", "喝腊八粥、泡腊八蒜、祭祀祖先神灵", "佛教纪念释迦牟尼成道之日，民间喝腊八粥寓意祈福求寿、驱寒暖胃，标志着春节序幕的拉开。"],
    [13, "小年", "农历腊月二十三/二十四", "传统节日", "祭灶王、扫尘土、吃灶糖、剪窗花", "又称祭灶节，是春节的序曲。民间有\"二十三，糖瓜粘\"之说，意味着开始准备过年。"],
    [14, "除夕", "农历腊月二十九或三十", "传统节日", "吃年夜饭、守岁、贴年红、燃爆竹、发压岁钱", "岁末的最后一天晚上，意为旧岁至此而除，另换新岁。是辞旧迎新、阖家团圆的重要时刻。"],
]

# 填充数据
for row_data in festivals:
    ws.append(row_data)

# 设置数据区域样式
for row in ws.iter_rows(min_row=2, max_row=ws.max_row, min_col=1, max_col=ws.max_column):
    for cell in row:
        cell.border = thin_border
        cell.alignment = Alignment(horizontal="left", vertical="center", wrap_text=True)
        if cell.column == 1:
            cell.alignment = Alignment(horizontal="center", vertical="center")

# 设置列宽
column_widths = [6, 12, 22, 20, 35, 55]
for i, width in enumerate(column_widths, 1):
    ws.column_dimensions[get_column_letter(i)].width = width

# 设置行高
ws.row_dimensions[1].height = 28
for row in range(2, ws.max_row + 1):
    ws.row_dimensions[row].height = 55

# 冻结首行
ws.freeze_panes = "A2"

wb.save("中国传统节日.xlsx")
print("已创建文件：中国传统节日.xlsx")
