使用Python批量生成PPT版荣誉证书的示例代码

 更新时间:2023年08月21日 09:44:20   作者:艾派森  
使用Python处理PPT文件通常需要使用第三方库来简化对PPT文件的读取、写入和修改操作,本文将给大家介绍一个小案例,使用Python批量生成PPT版荣誉证书,感兴趣的同学跟着小编一起来看看吧

一、Python处理PPT

使用Python处理PPT文件通常需要使用第三方库来简化对PPT文件的读取、写入和修改操作。下面介绍一些常用的Python库和它们的功能:

python-pptx:这是一个流行的Python库,用于创建、读取和修改PPTX(Office Open XML格式)文件。您可以使用它创建新的幻灯片、添加文本、图像和形状,还可以修改幻灯片的样式和布局。

python-pptx-template:这个库在python-pptx的基础上增加了对模板的支持。您可以使用预定义的PPTX文件作为模板,然后在模板的基础上进行修改和生成新的演示文稿。

python-com-pptx:这是一个用于操作PPT文件的Windows COM库。它可以与Microsoft PowerPoint应用程序进行交互,允许您通过Python脚本控制和修改PPT文件。

pptx2pdf:这个库用于将PPT文件转换为PDF格式。它依赖于LibreOffice来进行转换,因此需要确保系统中已安装LibreOffice。

这里是一个使用python-pptx库创建简单幻灯片的示例:

from pptx import Presentation
# 创建一个新的PPT文件
presentation = Presentation()
# 添加一张幻灯片
slide = presentation.slides.add_slide(presentation.slide_layouts[5])
# 在幻灯片中添加标题和内容
title = slide.shapes.title
content = slide.placeholders[1]
title.text = "欢迎使用Python处理PPT"
content.text = "这是一个使用python-pptx库创建的演示文稿示例。"
# 保存PPT文件
presentation.save("example.pptx")

 请注意,您需要在运行脚本之前先安装相应的库。您可以使用 pip 来安装这些库:

pip install python-pptx
pip install python-pptx-template
pip install comtypes  # 用于python-com-pptx

使用Python处理PPT文件有许多好处:

  • 自动化:Python可以帮助您自动完成与PowerPoint有关的重复性任务,比如创建演示文稿、更新内容、添加幻灯片或格式化元素。这可以节省大量时间和精力。
  • 灵活性:Python提供了许多可以操作PPT文件的库和模块,让您可以进行各种操作,包括读取、写入、修改和提取数据。
  • 库支持:有特定的Python库,如 python-pptx ,可以简化处理PowerPoint文件的复杂性,提供简单的API供开发人员使用。
  • 定制化:使用Python,您可以根据动态数据或用户输入来定制PowerPoint演示文稿。例如,您可以将来自不同来源的数据合并到预先设计好的模板中,创建个性化的报告或演示文稿。
  • 集成性:Python可以轻松与在数据分析、数据处理和报告流程中常用的其他工具和系统集成。这样,您可以将PPT生成与数据处理和分析结合起来,创建全面且有见地的演示文稿。
  • 文本处理和数据提取:Python强大的文本处理能力使您可以从现有的PowerPoint演示文稿中提取信息。您可以搜索特定文本,从幻灯片中提取数据,甚至生成结构化数据以进行进一步的分析。
  • 协作:使用Python处理PPT文件,您可以促进团队成员之间的协作,使他们可以以编程方式生成和更新演示文稿,减少手动错误并确保一致性。
  • 跨平台:Python是一种跨平台语言,这意味着您的PPT处理脚本可以在不同的操作系统上运行,提供了灵活性和便捷性。
  • 节省成本:Python是一种开源语言,用于PPT处理的库也是免费提供的。这使得Python成为处理PowerPoint文件的一种经济高效的解决方案。

总的来说,Python的简单性、丰富的库支持和自动化任务的能力使其成为处理PowerPoint文件的优秀选择,无论您是想自动化演示文稿、从幻灯片中分析数据还是生成动态报告。

二、批量生成PPT版荣誉证书

技术工具:

Python版本:3.9

代码编辑器:jupyter notebook

每到学期末,幼儿园的小朋友除了让家长带上床上用品等回家,还有一张“好孩子”的“荣誉证书”。这个不像大朋友或者成人的荣誉证书,必须是通过激烈竞争而只有少数人才能获得的。这个可是人手一份的,大家都是“好孩子”。如果有小朋友没有拿到这个荣誉证书,家长和小孩子可不愿意了,非得找老师理论不可,哈哈。朋友所在的幼儿园每学期都要搞这个事情,整个幼儿园近400份荣誉证书,一个一个填写,专人要填几天。这不,这次园长让朋友来填,真愁死人了!于是朋友跑来亲切地询问我是否可以代劳。好吧,朋友相求,必须拍胸脯保证行啊。

此处,需要用到第三方库`pptx`。这个是专门用来创建和修改PPT幻灯片的库(PPT文件必须是.pptx为后缀的)。我们先安装这个库,步骤如下:

 1. Windows徽标键+字母键R,输入"cmd”运行命令输入窗口

2. 输入"pip install python-pptx",耐心等待下载及安装

有时候网络太差,下载到中途会崩溃,也可以直接去这个库所在的网站(python-pptx · PyPI)用迅雷下载到本地盘,再安装。比如我将这个下载好的压缩文件解压到E盘,然后打开运行cmd,输入"E:"进入E盘,再输入"cd python-pptx-0.6.18"进入其所在文件夹,最后输入"python setup.py install"进行安装。 

 如下是安装完成的提示,然后就可以使用了。

首先,需要在幻灯片母版的第一个版式中设置好模板,以便后面用程序调用:

此处,模板中插入了一张荣誉证书的背景图片,然后将文字部分分成了6个文本框(可根据实际情况灵活调整),在其中填入内容,设置好字体和字号。 

在power point软件中设置好模板之后,需要用程序读取一下模板中的文本框所对应的编号,即占位符(placeholder)的ID。由于PPT中一页幻灯片的占位符编号随着PPT的不断更改,不一定是按1,2,3这样的顺序排列的,只有读取一下才知道。

from pptx import Presentation
prs = Presentation('data\荣誉证书模板.pptx')
slide = prs.slides.add_slide(prs.slide_layouts[0]) # 第一个模板的第0个板式
for ph in slide.placeholders: #遍历这页PPT的所有占位符
    phf = ph.placeholder_format #获取占位符的格式
    print(phf.idx) #打印其ID编号
    ph.text = str(phf.idx)# 将编号写入PPT对应的位置中,以便后面一一对应
# 以上读取到占位符的ID方便后面调用
prs.save('data\荣誉证书模板-占位符编号.pptx')

 

以上,我们先导入安装好的`pptx`库中的`Presentation`(演示文稿/幻灯片)模块,然后打开对应路径下的PPT模板,并存入`prs`变量。然后通过`prs.slides.add_slide`以母版中的第一个模板新增1张幻灯片。模板的版式编号是从0开始的,所以第一个版式对应的是`[0]`。然后遍历这页PPT的所有占位符,获取其占位符的格式,存入`phf`变量。然后通过`phf.idx`打印其ID编号。如上,我们可以看到结果。随后通过`ph.text`将编号写入PPT对应的位置中,以便后面一一对应。由下图可见,其编号从上到下是10~15。 

模板做好,占位符ID确定后,就需要读取幼儿园所有小朋友的班级和名字信息,然后写入了。小朋友的信息存在现有的Excel表格中,使用`openpyxl`库读取出来即可。下面就来读取吧。 

from openpyxl import load_workbook
wb = load_workbook("data\名单.xlsx")
ws = wb.active
data={}
for row in range(2,ws.max_row+1):
    class_id = ws['A' + str(row)].value
    name = ws['B' + str(row)].value 
    data.setdefault(class_id,[])
    data[class_id].append(name)
data['小一'][:10]

以上,将名单中的班级和姓名信息按“班级”为键,“姓名”组成的列表为值存入字典`data`。通过`data['小一'][:10]`查看一下小一班前10个同学的数据。下面开始批量写入PPT。 

import time
t0=time.time()# 程序开始运行的时间
prs = Presentation('data\荣誉证书模板.pptx')
slide_layout = prs.slide_layouts[0] #调用设置好的母版,因为是母版的第一版式,所以取[0]
for class_id in data:
    for name in data[class_id]:
        slide = prs.slides.add_slide(slide_layout) #以母版的版式为基础新增一页幻灯片
        #往幻灯片中写入内容
        slide.placeholders[10].text = "{} 班 {} 同学:".format(class_id,name) #此处是班级和姓名
        slide.placeholders[11].text = "在2019-2020学年度第一学期获得"
        slide.placeholders[12].text = "“好孩子”称号。"
        slide.placeholders[13].text = "特发此证,以资鼓励。"
        slide.placeholders[14].text = "市幼儿园"
        slide.placeholders[15].text = "2020年1月"
prs.save('data\荣誉证书(总).pptx')
t1 = time.time()
print('程序用时:',str(round(t1-t0))+'秒。')

400名小朋友的奖状只用了8秒钟写完。以上,通过`for`循环先获取班级,然后第二个`for`循环获取该班级下面对应的姓名,对于每个姓名,通过`prs.slides.add_slide`新建一页幻灯片,然后按我们先前获取的占位符ID,写入内容。除了班级和姓名,其它都是固定的内容。写入完成后,保存打印即可。而且PPT里是按班级排序的,这样每个班级的荣誉证书在打印后会集中在一起,方便区分。 

以上就是使用Python批量生成PPT版荣誉证书的示例代码的详细内容,更多关于Python生成PPT版荣誉证书的资料请关注脚本之家其它相关文章!

相关文章

  • pycharm运行程序时在Python console窗口中运行的方法

    pycharm运行程序时在Python console窗口中运行的方法

    今天小编就为大家分享一篇pycharm运行程序时在Python console窗口中运行的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python退火算法在高次方程的应用

    Python退火算法在高次方程的应用

    退火算法就是钢铁在淬炼过程中失温而成稳定态时的过程,热力学上温度(内能)越高原子态越不稳定。这篇文章主要介绍了Python退火算法在高次方程的应用,需要的朋友可以参考下
    2018-07-07
  • Python常用GUI框架原理解析汇总

    Python常用GUI框架原理解析汇总

    这篇文章主要介绍了Python常用GUI框架原理解析汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • python_tkinter事件类型详情

    python_tkinter事件类型详情

    这篇文章主要介绍了python_tkinter事件详情,文章基于python_tkinter事件相关资料分享的内容有事件绑定函数,事件对象等相关自资料,需要的小伙伴可以参考一下
    2022-03-03
  • 解决python3.x安装numpy成功但import出错的问题

    解决python3.x安装numpy成功但import出错的问题

    这篇文章主要介绍了解决python3.x安装numpy成功但import出错的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • 使用pandas对矢量化数据进行替换处理的方法

    使用pandas对矢量化数据进行替换处理的方法

    下面小编就为大家分享一篇使用pandas对矢量化数据进行替换处理的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  •  Java SE 面向对象编程的3个常用接口

     Java SE 面向对象编程的3个常用接口

    这篇文章主要f Java SE 面向对象编程的3个常用接口,Comparable、Comparator 比较器、Cloneable,下面文章详细介绍,需要的小伙伴可以参考一下
    2022-01-01
  • Python基于Opencv识别两张相似图片

    Python基于Opencv识别两张相似图片

    这篇文章主要介绍了Python基于Opencv识别两张相似图片的步骤,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • 基于Python3 逗号代码 和 字符图网格(详谈)

    基于Python3 逗号代码 和 字符图网格(详谈)

    下面小编就为大家带来一篇基于Python3 逗号代码 和 字符图网格(详谈)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 浅谈Python程序的错误:变量未定义

    浅谈Python程序的错误:变量未定义

    这篇文章主要介绍了浅谈Python程序的错误:变量未定义,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06

最新评论