一起用代码吸猫!本文正在参与【喵星人征文活动】
前言
近期云吸猫活动火热,猫咪太可爱了,趁着工作间隙,做一份2022年猫咪主题的日历给自己吧。
话不多说,我们来开始动手做吧!
下载猫咪图片
我们在网页上,关键字搜索”猫咪”,可以搜索出上万张猫咪的图片
选择自己喜欢的图片,下载到文件中,且为每一张图片命名为从1~12的数字
下载依赖库
本次,我们需要下载第三方依赖库-openpyxl完成写入编辑excel表格操作
- openpyxl 模块介绍
openpyxl 是用于对Excel文件进行读取写入操作的库
- openpyxl 模块下载
1 | python复制代码pip install openpyxl |
导入依赖库
根据日历的需求:要生成日历,并且写入到Excel表格,所以我们需要导入一下库
1 | python复制代码import openpyxl |
生成12个月的日历
根据日历的需求分析,做法如下
- 首先使用openpyxl.Workbook()创建新
1 | Python复制代码wb = openpyxl.Workbook() |
- 使用 openpyxl.Workbook实例化对象wb调用create_sheet创建表
1 | python复制代码sheet = wb.create_sheet(index=0,title=sheet_name[i]) |
- 使用calendar.monthcalendar(year,i)获取指定月的二维列表数据
1 | python复制代码print(calendar.monthcalendar(2022,1)) |
- 使用两个for循环就可以得到12个月的二维列表
1 | Python复制代码for j in range(len(calendar.monthcalendar(year,i))): |
- 条件判断当得到的数据是0是,则表格中写入空;否则写入具体的日期
1 | Python复制代码f value == 0: |
- 为日历添加标题和样式设置
+ 由于设置日历firstday设置成周天为一周的第一天
+ 传入的日历标题为 ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]
+ 字体设置成微软雅黑,大小为11
+ 单元格居中:Alignment(horizontal="right",vertical="center")
1 | Python复制代码for R1 in range(1,100): |
1 | * 最后我们设置一下日历的表格格式 |
python复制代码for k4 in range(8,15):
sheet.row_dimensions[k4].height = 30
sheet.cell(row=3,column=1).value = year+"年"
sheet.cell(row=4,column=1).value = sheet_name[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
1 | * 保存生成好的日历文件 |
python复制代码wb.save(filename)
1 |
|
python复制代码
def add_image(filepath):
wb = load_workbook(filepath)
sheet_names = wb.get_sheet_names()
for i in range(0,len(sheet_names)):
wb = load_workbook(filepath)
ws = wb[sheet_names[i]]
ws.merge_cells('I1:P20')
img = Image(f'file/{i}.jpg')
ws.add_image(img,'I1')
wb.save(filepath)
最后来看一下效果吧
=========

总结
==
本期,使用Python简单制作一个猫咪主题的日历,大家可以动手做一个个性化的日历吧~
以上是本期内容,欢迎大佬们点赞评论,下期见~
**本文转载自:** [掘金](https://juejin.cn/post/7028544246575529992)
*[开发者博客 – 和开发相关的 这里全都有](https://dev.newban.cn/)*