用Python自动化生成爱豆日历_python 生成日历(1)

一个工作䈬保存在扩展名为「.xlsx」的文件中。

划重点,openpyxl只支持「.xlsx」类型的格式。

所以对于Excel2003版「.xls」格式是不支持的。

每个工作䈬可以包含多个表,又称为工作表。

本次生成的信息就是在一个工作䈬,12个工作表内。

calendar库主要是生成日历信息。

 

import calendar
# 设置每周的起始日期码,为星期天
calendar.setfirstweekday(firstweekday=6)
# 返回2019年年历
print(calendar.calendar(2019, w=2, l=1, c=6))

输出如下。

返回1月份每列信息情况。

 

# 返回每月每列信息
print(calendar.monthcalendar(2019, 1))
# 输出结果
[[0, 0, 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, 0, 0]]

与上图里1月份信息比较下,你会发现多了个数字0。

其他完全一样,所以遍历列表信息就完事了。

/ 02 / 爱豆日历

爱豆日历的生成其实也挺简单的。

主要是单元格文本添加,字体设置,背景设置,图片设置。

详细代码如下。

 

from openpyxl.styles import Alignment, PatternFill, Font
from openpyxl.utils import get_column_letter
from openpyxl.drawing.image import Image
import openpyxl
import calendar

# 设置第一天为星期天
calendar.setfirstweekday(firstweekday=6)
# 创建一个工作䈬
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(2019, i))):
        for k in range(len(calendar.monthcalendar(2019, i)[j])):
            value = calendar.monthcalendar(2019, i)[j][k]
            # 将0值变为空值
            if value == 0:
                value =   
                sheet.cell(row=j + 9, column=k + 1).value = value
            else:
                sheet.cell(row=j + 9, column=k + 1).value = value
                # 设置字体
                sheet.cell(row=j + 9, column=k + 1).font = Font(u 微软雅黑 , size=11)
    # 单元格文字设置,右对齐,垂直居中
    align = Alignment(horizontal= right , vertical= center )
    # 单元格填充色属性设置
    fill = PatternFill(“solid”, fgColor=“B9EBF7”)
    # 对单元格进行颜色填充
    for k1 in range(1, 100):
        for k2 in range(1, 100):
            sheet.cell(row=k1, column=k2).fill = fill
    # 添加星期几信息行
    days = [ 星期日 ,  星期一 ,  星期二 ,  星期三 ,  星期四 ,  星期五 ,  星期六 ]
    num = 0
    for k3 in range(1, 8):
        sheet.cell(row=8, column=k3).value = days[num]
        sheet.cell(row=8, column=k3).alignment = align
        sheet.cell(row=8, column=k3).font = Font(u 微软雅黑 , size=11)
        # 设置列宽12
        c_char = get_column_letter(k3)
        sheet.column_dimensions[get_column_letter(k3)].width = 12
        num += 1
    # 设置行高30
    for k4 in range(8, 14):
        sheet.row_dimensions[k4].height = 30
    # 合并单元格
    sheet.merge_cells( I1:P20 )
    # 添加图片
    img = Image( huge_2.jpg )
    sheet.add_image(img,  I1 )

# 添加年份及月份
    sheet.cell(row=3, column=1).value =  2019年
    sheet.cell(row=4, column=1).value = str(i) +  月
    # 设置年份及月份文本属性
    sheet.cell(row=3, column=1).font = Font(u 微软雅黑 , size=16, bold=True, color= FF7887 )
    sheet.cell(row=4, column=1).font = Font(u 微软雅黑 , size=16, bold=True, color= FF7887 )
    sheet.cell(row=3, column=1).alignment = align
    sheet.cell(row=4, column=1).alignment = align
# 保存文档
wb.save( 爱豆日历.xlsx )

最后来个小预览。

原来小F的爱豆是胡歌,那么你的又是谁。

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 14
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用Python的第三方库来实现自动文档管理和日历生成的功能。以下是使用Python的两个常用库: 1. PyPDF2:用于处理PDF文件的Python库。您可以使用它来读取和写入PDF文件,插入或删除页面等。 2. iCalendar:用于生成iCalendar格式的日历文件的Python库。 下面是一个示例代码,它可以将指定文件夹中的所有PDF文件转换为iCalendar格式的日历文件,并将其保存到指定位置: ```python import os import datetime import PyPDF2 from icalendar import Calendar, Event # 设置文件夹路径和输出文件路径 folder_path = 'path/to/pdf/files' output_path = 'output/calendar.ics' # 创建日历对象 calendar = Calendar() # 遍历文件夹中的所有PDF文件 for filename in os.listdir(folder_path): if filename.endswith('.pdf'): # 打开PDF文件并读取第一页的文本内容 with open(os.path.join(folder_path, filename), 'rb') as f: pdf_reader = PyPDF2.PdfFileReader(f) page = pdf_reader.getPage(0) text = page.extractText() # 解析文本内容并提取日期信息 # 这里需要根据PDF文档的具体格式进行解析 date_str = '2022-01-01' # 假设从文本中解析出的日期为2022年1月1日 # 创建事件对象并添加到日历中 event = Event() event.add('summary', filename) # 设置事件标题为文件名 event.add('dtstart', datetime.datetime.strptime(date_str, '%Y-%m-%d')) # 设置事件开始时间 event.add('dtend', datetime.datetime.strptime(date_str, '%Y-%m-%d') + datetime.timedelta(days=1)) # 设置事件结束时间 calendar.add_component(event) # 将日历保存到文件 with open(output_path, 'wb') as f: f.write(calendar.to_ical()) ``` 请注意,这只是一个示例代码,您需要根据您的具体需求进行修改和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值