博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《自动化办公》两秒完成250页豆瓣电影PPT
阅读量:6221 次
发布时间:2019-06-21

本文共 2744 字,大约阅读时间需要 9 分钟。

PPT并不好用, 但还是得用它, 这里借用豆瓣Top250的电影信息, 利用python-pptx (0.6.7)自动生成250张PPT, 希望通过实例, 给常年整理PPT报表的上班族, 一个解放生产力的新思路

最终效果展示

数据哪里来的?

爬虫抓的!

不懂爬虫怎么办?

看这里

自动化制作PPT 的 一二三

先制作PPT模板

制作模板的过程, 就是插入占位符的过程, 可以根据自己的需求插入各种占位符, 比如,豆瓣电影Top250的需求是, 插入图片和文本内容, 那就从占位符中选择, 内容, 图片, 插入模板就好, 然后再对模板中的内容样式和图片位置进行调整, 就能得到符合需求的模板了

准备数据:

我直接把原来写过的,python爬取豆瓣电影的脚本, 运行了一遍, 图片和文本数据就都齐了

Python编程(将数据按照模板填空, 导出到最终的ppt中)

源码如下(注释详尽):

from pptx import Presentationfrom pptx.util import Inches# 获取豆瓣电影信息def getInfo():	movies_info = []	with open('./douban_movie_top250.txt') as f:		for line in f.readlines():			line_list = line.split("\'")			one_movie_info = {}			one_movie_info['index'] = line_list[1]			one_movie_info['title'] = line_list[3]			one_movie_info['score'] = line_list[5]			try:				one_movie_info['desc'] = line_list[7]			except:				one_movie_info['desc'] = ''			one_movie_info['image_path'] = "./Top250_movie_images/"+ str(line_list[1]) + '_' + line_list[3] + ".jpg"			movies_info.append(one_movie_info)	return movies_info# 创建pptdef createPpt(movies_info):	prs = Presentation('model.pptx')	for movie_info in movies_info:		# 获取模板个数		templateStyleNum = len(prs.slide_layouts)		# 按照第一个模板创建 一张幻灯片		oneSlide = prs.slides.add_slide(prs.slide_layouts[0])		# 获取模板可填充的所有位置		body_shapes = oneSlide.shapes.placeholders		for index, body_shape in enumerate(body_shapes):			if index == 0:				body_shape.text = movie_info['index']+movie_info['title']			elif index == 1:				img_path = movie_info['image_path']				body_shape.insert_picture(img_path)			elif index == 2:				body_shape.text = movie_info['desc']			elif index == 3:				body_shape.text = movie_info['score']	# 对ppt的修改  	prs.save('豆瓣Top250推荐.pptx')def main():	# 获取豆瓣电影信息	movies_info = getInfo()	createPpt(movies_info)if __name__ == '__main__':	main()复制代码

Python生成图表(豆瓣电影Top20的评分为例)

# encoding: utf-8from pptx import Presentationfrom pptx.chart.data import ChartDatafrom pptx.enum.chart import XL_CHART_TYPEfrom pptx.util import Inches# 创建幻灯片prs = Presentation()slide = prs.slides.add_slide(prs.slide_layouts[6])# 定义图表数据chart_data = ChartData()chart_data.categories = ['肖申克的救赎', '霸王别姬', '这个杀手不太冷', '阿甘正传', '美丽人生', '千与千寻', '泰坦尼克号', '辛德勒的名单', '盗梦空间', '机器人总动员', '海上钢琴师', '三傻大闹宝莱坞', '忠犬八公的故事', '放牛班的春天', '大话西游之大圣娶亲', '楚门的世界', '教父', '龙猫', '熔炉', '乱世佳人']chart_data.add_series('豆瓣电影', (9.6, 9.5, 9.4, 9.4, 9.5, 9.2, 9.2, 9.4, 9.3, 9.3, 9.2, 9.2, 9.2, 9.2, 9.2, 9.1, 9.2, 9.1, 9.2, 9.2))# 将图表添加到幻灯片x, y, cx, cy = Inches(0), Inches(0), Inches(10), Inches(8)slide.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data)prs.save('豆瓣 Top20 评分图.pptx')复制代码

关于数据图形化: Python有很多优秀的图形库, 比如matplotlab, 以及Google推出的在线编程工具colabratory, 都可以方便的实现数据可视化, 掌握了Python图形库的使用, 基本可以和PPT图表说拜拜了...

教程涉及到的资源我都通过百度网盘分享给大家,为了便于大家的下载,资源整合到了一张独立的帖子里,链接如下:

转载地址:http://krrja.baihongyu.com/

你可能感兴趣的文章
51Nod 1136 欧拉函数 Label:数论
查看>>
转载 乘法逆元
查看>>
http
查看>>
优化 JS 条件语句及JS 数组常用方法, ---- 看完绝对对日后开发有用
查看>>
python基础===基于requests模块上的协程【trip】
查看>>
SharePoint Users&AllUsers&SiteUsers
查看>>
前端开发概述+JS基础细节知识点
查看>>
Oracle之rman数据库在非归档模式下的备份和恢复
查看>>
宏常量,宏替换,const常量
查看>>
数学函数最小值为什么可以通过导数=0来求出呢?
查看>>
计算机操作系统(三)--- 处理器体系结构(一)
查看>>
poj1564
查看>>
poj1081
查看>>
poj1731
查看>>
day10:vcp考试
查看>>
BestCoder Round #74 (div.2)
查看>>
Kruskal HDOJ 1863 畅通工程
查看>>
解决MyEclipe出现An error has occurred,See error log for more details的错误
查看>>
BZOJ4942 & UOJ314:[NOI2017]整数——题解
查看>>
109.110.100.56 samba用户名 PAS, 密码 111111
查看>>