喵喵那么可爱,做个猫咪主题的日历 前言 下载猫咪图片 下载依

image.png

一起用代码吸猫!本文正在参与【喵星人征文活动】

前言

近期云吸猫活动火热,猫咪太可爱了,趁着工作间隙,做一份2022年猫咪主题的日历给自己吧。

话不多说,我们来开始动手做吧!

下载猫咪图片

我们在网页上,关键字搜索”猫咪”,可以搜索出上万张猫咪的图片

image.png

选择自己喜欢的图片,下载到文件中,且为每一张图片命名为从1~12的数字

image.png

下载依赖库

本次,我们需要下载第三方依赖库-openpyxl完成写入编辑excel表格操作

  • openpyxl 模块介绍

openpyxl 是用于对Excel文件进行读取写入操作的库

  • openpyxl 模块下载

1
python复制代码pip install openpyxl

导入依赖库

根据日历的需求:要生成日历,并且写入到Excel表格,所以我们需要导入一下库

1
2
3
4
5
6
7
8
9
10
11
12
python复制代码import openpyxl
# 日历模块
import calendar

# 设置单元格样式
from openpyxl.styles import Alignment,PatternFill,Font
# 获取列的字母
from openpyxl.utils import get_column_letter
# 向Excel写入图片
from openpyxl.drawing.image import Image
# 加载Excel文件
from openpyxl import load_workbook

生成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
2
3
4
5
6
7
8
python复制代码print(calendar.monthcalendar(2022,1))

# [[0, 0, 0, 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, 0, 0, 0, 0]]
  • 使用两个for循环就可以得到12个月的二维列表

1
2
3
4
5
Python复制代码for j in range(len(calendar.monthcalendar(year,i))):

for k in range(len(calendar.monthcalendar(year,i)[j])):

value = calendar.monthcalendar(year,i)[j][k]
  • 条件判断当得到的数据是0是,则表格中写入空;否则写入具体的日期

1
2
3
4
5
6
7
8
9
Python复制代码f 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)
  • 为日历添加标题和样式设置

+ 由于设置日历firstday设置成周天为一周的第一天
+ 传入的日历标题为 ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]
+ 字体设置成微软雅黑,大小为11
+ 单元格居中:Alignment(horizontal="right",vertical="center")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Python复制代码for R1 in range(1,100):

for C2 in range(1,100):

sheet.cell(row=R1,column=C2).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)

sheet.column_dimensions[get_column_letter(k3)].width = 12

num +=1
1
2
3
4
5
6
7
* 最后我们设置一下日历的表格格式
---------------


+ 单元格高度设置为30
+ 单元格字体样式为微软雅黑
+ 单元格水平居中

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
2
* 保存生成好的日历文件
----------

python复制代码wb.save(filename)

1
2
3
4
5
6
7
8
9


添加喵咪图片
======


* wb.load\_workbook()打开日历文件
* wb.get\_sheet\_names()获取Excel表格名字列表
* 加载出来的文件对象使用add\_image()方法把图片添加到对应表中

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)


最后来看一下效果吧
=========


![效果](https://gitee.com/songjianzaina/juejin_p12/raw/master/img/2d390d9005ae0e1a0d2339406b348b8e0e716398c4993794fcca4913c7ab6e37)


总结
==


本期,使用Python简单制作一个猫咪主题的日历,大家可以动手做一个个性化的日历吧~


以上是本期内容,欢迎大佬们点赞评论,下期见~



**本文转载自:** [掘金](https://juejin.cn/post/7028544246575529992)

*[开发者博客 – 和开发相关的 这里全都有](https://dev.newban.cn/)*
0%