首页 > IT职业 > IT职场 > 两秒完成250页豆瓣电影PPT
PPT并不好用, 但还是得用它, 这里借用豆瓣Top250的电影信息, 利用
python-pptx (0.6.7)自动生成250张PPT, 希望通过实例, 给常年整理PPT报表的上班族, 一个解放生产力的新思路
PPT动图
爬虫抓的!
插入占位符
占位符种类
制作模板的过程, 就是插入占位符的过程, 可以根据自己的需求插入各种占位符, 比如,豆瓣电影Top250的需求是, 插入图片和文本内容, 那就从占位符中选择,
内容,图片, 插入模板就好, 然后再对模板中的内容样式和图片位置进行调整, 就能得到符合需求的模板了
模板长这样
我直接把原来写过的,python爬取豆瓣电影的脚本, 运行了一遍, 图片和文本数据就都齐了《进击的虫师》爬取豆瓣电影海报(Top250)
准备资源
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()
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图表说拜拜了...
colabratory
作者:木子昭
链接:https://www.jianshu.com/p/5b294515b480
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/212/viewspace-2809872/ ,如需转载,请注明出处,否则将追究法律责任。