<自动化办公> 两秒完成250页豆瓣电影PPT

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

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

Python 自动生成 豆瓣电影PPT

最终效果展示

PPT动图

数据哪里来的?

爬虫抓的!

不懂爬虫怎么办?

看这里《进击的虫师》爬取豆瓣电影海报(Top250)

自动化制作PPT 的 一二三

先制作PPT模板

插入占位符

占位符种类

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

模板长这样

准备数据:

我直接把原来写过的,python爬取豆瓣电影的脚本, 运行了一遍, 图片和文本数据就都齐了《进击的虫师》爬取豆瓣电影海报(Top250)

准备资源

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

源码如下(注释详尽):

from pptx import Presentation
from 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


# 创建ppt
def 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的评分为例)

Top20报表
# encoding: utf-8
from pptx import Presentation
from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE
from 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

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

目录
相关文章
【IntelliJ IDEA】idea修改文件的file is read-only
【IntelliJ IDEA】idea修改文件的file is read-only
2912 0
|
5月前
|
Ubuntu Linux
Ubuntu24.04LTS默认采用Linux 6.8内核,实验性版本可通过PPA获得
IT之家提醒,当下的 Ubuntu 23.10 也是一个“短期支持版本”,该版本将在今年 7 月终止支持,而今年 4 月推出的 Ubuntu 24.04 LTS 长期支持版本将获得 5 年的更新支持。
|
2月前
|
人工智能 自然语言处理 JavaScript
Playwright MCP浏览器自动化指南:让AI精准理解你的命令
本文介绍如何结合Playwright与MCP协议实现自然语言驱动的网页自动化操作。通过配置MCP服务器,AI助手可直接操控浏览器完成信息获取、表单填写等复杂任务,显著降低自动化技术门槛,提升操作效率。
|
4月前
|
供应链 搜索推荐 Oracle
一文看懂 供应链管理系统:是什么,功能模块,怎么定制开发?
供应链管理系统就像企业的“智能管家”,帮助企业高效管理采购、生产、库存、物流和销售等环节。对于新手来说,它不仅能减少人为错误、优化库存、提升客户满意度,还能通过自动化流程节省大量时间和成本。无论是电商、小工厂还是个性化定制企业,都能找到适合自己的解决方案,尤其通过低代码平台(如Zoho Creator),无需编程也能轻松搭建专属系统。从基础功能入手,逐步优化,小企业也能实现高效运营,让生意越做越顺。
794 0
|
11月前
|
算法 测试技术 Swift
Kimi开源Moonlight-16B-A3B:基于Muon优化器的高效大模型,性能与训练效率双突破!
Kimi开源Moonlight-16B-A3B:基于Muon优化器的高效大模型,性能与训练效率双突破!
398 0
|
数据采集 SQL 数据挖掘
电商数据分析的方法
电商数据分析涵盖从业务需求理解到数据呈现的全流程。初学者应循序渐进,掌握数据清洗、转换等技能,Python是重要工具。社交媒体营销分析关注用户参与度和KOL影响。实战教程如《2019电商数据分析师实战项目》提供Excel、SQL及Tableau应用案例,帮助巩固理论知识。代码示例展示了如何使用Pandas和SQLAlchemy进行销售数据分析,计算转化率。 (注:联系方式和感谢语已省略以符合要求)
电商数据分析的方法
|
JSON 算法 C语言
【leecode刷题】各种哈希表最全面总结----以217. 存在重复元素为例
【leecode刷题】各种哈希表最全面总结----以217. 存在重复元素为例
346 0
【leecode刷题】各种哈希表最全面总结----以217. 存在重复元素为例
|
机器学习/深度学习 存储 算法
r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现(下)
r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现
|
XML Java Apache
Java中的日志框架选择与配置
Java中的日志框架选择与配置

热门文章

最新文章