日历是一种常见的工具,用于记录事件和显示日期。在编程中,可以使用Python编码来制作日历。
Python提供了一些内置的模块和函数,使得制作日历变得更加简单。
在本文,我们将探讨如何使用Python制作日历,并将日历输出到excel文档中。
在代码中会用到calendar模块和openpyxl模块,其中calendar模块是python自带的,而openpyxl模块需要自行下载“pip install openpyxl”。
import calendar
import openpyxl
from openpyxl.styles import Alignment, PatternFill, Font
from openpyxl.utils import get_column_letter
from openpyxl.drawing.image import Image
from openpyxl.styles import Side, Border
#year = int(input(“请输入年份:”))
#calendar.setfirstweekday(firstweekday=6)
###设置表头所在起始行
table_head_row = 3
##设置表内容所在起始行
table_comment_row = table_head_row + 1
# 创建一个工作䈬
wb = openpyxl.Workbook()
# 遍历12个月
for i in range(1, 13):
# 添加工作表
sheet = wb.create_sheet(index=0, title=str(i) + '月')
# 获取具体日期时间,设置表内容
for j in range(len(calendar.monthcalendar(2023, i))):
for k in range(len(calendar.monthcalendar(2023, i)[j])):
value = calendar.monthcalendar(2023, i)[j][k]
# 将0值变为空值
if value == 0:
value = ''
sheet.cell(row=j + table_comment_row, column=k + 1).value = value
else:
sheet.cell(row=j + table_comment_row, column=k + 1).value = value
# 设置字体
sheet.cell(row=j + table_comment_row, column=k + 1).font = Font(u'微软雅黑', size=11)
# 单元格文字设置,右对齐,垂直居中
align = Alignment(horizontal='right', vertical='center')
# 单元格填充色属性设置
fill = PatternFill("solid", fgColor="B9EBF7")
# 对单元格进行颜色填充
for k1 in range(1, 10):
for k2 in range(1, 8):
sheet.cell(row=k1, column=k2).fill = fill
# 设置表头
days = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六','星期日']
num = 0
for k3 in range(1, 8):
sheet.cell(row=table_head_row, column=k3).value = days[num]
sheet.cell(row=table_head_row, column=k3).alignment = align
sheet.cell(row=table_head_row, column=k3).font = Font(u'微软雅黑', size=16)
# 设置列宽12
c_char = get_column_letter(k3)
sheet.column_dimensions[get_column_letter(k3)].width = 18
num += 1
# 设置表头行高50
sheet.row_dimensions[table_head_row].height = 50
# 设置内容行高30
for k4 in range(table_comment_row, table_comment_row + 6):
sheet.row_dimensions[k4].height = 70
# 设置表线条的样式和颜色 style=medium, thin, thick
side = Side(style="thin", color="FF0000")
# 设置表单元格的边框线条
border = Border(top=side, bottom=side, left=side, right=side)
for k5 in range(table_head_row, table_head_row + 7):
for k6 in range(1, 8):
sheet.cell(row=k5, column=k6).border = border
# 添加年份及月份
sheet.cell(row=1, column=1).value = '2023年' + str(i) + '月'
# 设置年份及月份文本属性
sheet.cell(row=1, column=1).font = Font(u'微软雅黑', size=14, bold=True, color='FF7887')
sheet.cell(row=1, column=1).alignment = align
# 保存文档
wb.save('日历.xlsx')
print("calendar finished!!")
如果在windows上没有安装pip,安装时可能会报错。
请参照文章pip时报错:ImportError: cannot import name ‘InvalidSchemeCombination’解决