需求:目前有一份Excel表格,里面有姓名和英文名两列数据。需要根据这些数据生成200张左右的荣誉证书,放在一个pptx文件中。

表格部分截图:

ppt模板截图:

(上方占位符写中文名,下方写英文名)

一、基础知识

1.ppt的母版

首先新建一个pptx文件。

点击“视图->幻灯片母版”

选择第一张底下的所有版式,按delete键删除,选择第一张内部的所有内容,删除。最后应该是这样,干干净净的:

点击:插入版式,删掉自带的标题文本框

为简明起见,这里只插入两个占位符,分别表示中文名和英文名。有需要者可以加入更多的占位符,也可以自行调整背景、字体等。

插入占位符的时候,记得删除里面的所有内容。按两次退格键即可删干净,最后,占位符里面会显示“对象”,这是正常的。

按ctrl+s保存并退出。

2.必要的python知识

python当前的最新版本是3.10,但python存在严重的向下不兼容问题,因此不推荐使用太高的版本。

python的选择结构:

score=70
if(score>90):print('优秀')
elif(score>60):print('及格')
else:print('不及格')

python的循环结构:

for i in range(0,4):print(i)# 结果
# 0
# 1
# 2
# 3

括号是左闭右开的,不包括右边界。

python的列表:用[]定义,用下标访问。列表相当于Java、C++的数组,下标以0开始。

arr=['Tom',12]
print(arr[0])
print(arr[1])

python的字典:用{}定义,用变量名[key]访问。

dict={}  # 初始化字典
dict["Tom"]=12  #添加键值对
print(dict["Tom"])  #通过key访问value#12#本题中涉及的操作
dict1={}
dict1.setdefault("Tom",[])  # 添加key为"Tom",值为默认值[](一个空数组)的键值对
dict1["Tom"].append(12)  #访问到"Tom"对应的数组,为数组添加元素
print(dict1["Tom"])#[12]

二、环境搭建

1.下载python

搜索python 3.6,进入官网下载

等待片刻,出来这个页面,向下滚动,直到看到一个表格:

点击,等待下载完成即可。

双击允许下载好的安装程序。

先勾选最下面的框,然后点自定义安装。

点击next

这一步需要自己改一下安装路径,我放在D盘下的python3.6文件夹下。

等待安装完成,重启电脑即可。

2.安装pycharm

搜索pycharm,直接点download即可。

有两个选项,选右边的社区版。

等待下载完成,双击打开安装程序。

第一步next,然后选择安装路径,这里装在D盘下。

next,全部打勾。

一路next即可,等待安装完成。

3.创建工程

运行pycharm,弹出这个窗口,点OK。

点击new project

点location右边的小文件夹,修改工程路径。这个路径一定要能方便地找到!

其他的不用修改,因为pycharm已经检测到安装好的python 3.6。

点击create,目前的界面是这样。

三、测试代码

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')from openpyxl import load_workbook
wb = load_workbook("data\表格.xlsx")
ws = wb.active
data={}
for row in range(1,ws.max_row+1):class_id = ws['A' + str(row)].valuename = ws['B' + str(row)].valuedata.setdefault(class_id,[])data[class_id].append(name)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[11].text = class_id #班级slide.placeholders[12].text = name  #名字prs.save('data\总计.pptx')
t1 = time.time()print('程序用时:',str(round(t1-t0))+'秒。')

粘贴以上代码到main.py中,不出意外,会报4个错。这是因为没有安装对应的包导致的。

将光标移到openpyxl上,点击安装即可。

这时,还有两个错误未解决,需要我们手动安装第三方包。

File->Settings

Project:xxx->Python Interpreter

点击加号

搜索框中输入python-pptx,点击安装,只安装这个包即可。

等待片刻,所有错误都应该已经解决。

打开刚刚创建项目的文件夹,新建文件夹,名字为data。

将准备好的模板.pptx、表格.xlsx粘贴到data文件夹里面。

以下内容与占位符原理有关,如果只想运行代码,可以跳过


占位符

先将第10行以下的内容全部注释。注释的方法是:选中第10行以下的内容,然后按ctrl+/

然后在代码窗口中按右键,点击Run 'main'。

回到刚才的data文件夹,打开新生成的模板-占位符编号.pptx

没有看到任何内容,很正常,点击关闭母版视图即可。

其中的12、11就是占位符编号。用slide.placeholders[占位符编号]即可访问这些占位符。

可以根据这些编号修改源码,控制各个占位符里应写入的文字。

然后,选中第十行以下的区域,按下ctrl+/解除注释。


(接上文)

在代码窗口按右键,点击Run 'main'

出现这些内容,表示运行成功。

打开生成的总计.pptx进行检查:

生成了399张不同的幻灯片,达到了预期要求!

四、改进

1. 在实际应用中,一个模板可能会有多个占位符,最好先根据上文的方法观察一下占位符编号再决定数据写入的位置

2. 一个母版可能会有多个附属的模板,就像这样:

这些模板以0开始,可以这样访问:

if(cnt<170):slide_layout = prs.slide_layouts[0] #第0个模板
else:slide_layout = prs.slide_layouts[1] #第1个模板

实际应用可以实现这样一种效果:表格的前170行使用第一个模板,后面的使用第二个模板

3. 表格的行(row)是从1开始的,因此如果有表头,那么读取时应从第二行开始。

#有表头的情况
for row in range(2,ws.max_row+1):class_id = ws['A' + str(row)].valuename = ws['B' + str(row)].valuedata.setdefault(class_id,[])data[class_id].append(name)

以下是程序所用的表格和模板:

链接:https:加上//pan.baidu.com/s/1D2Qck3lfbKJVDYh1EzNbnA

提取码:e534

PPT批量导入文字(Python实现)相关推荐

  1. python提取微信聊天语音_GitHub - dennischancs/wechat-asr: 微信语音批量转文字 python编写 用百度智能云短语音识别API实现 windows下的使用...

    WeChat-ASR 微信语音批量转文字 调用百度智能云短语音识别API 目前仅支持安卓手机+Windows 简介 最近线上办公,很多小会议或者讲座等也在微信群里,有时需要记录保存会议讲话内容,也可能 ...

  2. python批量下载txt图片批量导入到ppt

    初步有各个楼盘图片的相关网址,想批量导入到ppt,编相应序号,保证每一张一个楼盘,每页展示6-8张图片.第一步:根据相关网址批量下载图片 相关网址放入file_url_text.txt中,形成列表 ​ ...

  3. Python批量导入图片生成PowerPoint 2007+文件

    说明:本文是"Python批量爬取微信公众号文章中的图片"的后续文章,用来把从公众号批量抓取的图片还原为PowerPoint 2007文件. 使用方法:安装扩展库python-pp ...

  4. Python批量导入图片生成能治疗颈椎病的HTML5版课件

    本文要点:Python文件操作,HTML5的figure元素和CSS3属性的用法. 说明:1):本文图片来自于相关阅读中Python批量导出多个PPT/PPTX文件中每个幻灯片为独立JPG图片或Pyt ...

  5. python批量导入图片_Python批量导入图片生成PowerPoint 2007+文件

    原标题:Python批量导入图片生成PowerPoint 2007+文件 说明:本文是"Python批量爬取微信公众号文章中的图片"的后续文章,用来把从公众号批量抓取的图片还原为P ...

  6. Python批量导入图片到Word文件

    问题背景:2017年4月应华章公司邀请,翻译一本来自美国的Python入门教材,全书共750页,2018年4月完成翻译交稿,2018年9月责任编辑寄来样稿进行印刷前校对.经过半个月的检查和校对,又进行 ...

  7. python 根据word生成ppt_未明学院:利用Python将Wordamp;PPT批量转成PDF

    Python中的许多库,像一个个具有不同功能的"工具",能帮助我们解决工作中的不同问题,提高工作效率! 本期将继续为大家放松python中的实用技能,本期的主题是:利用Python ...

  8. 终端证书文件批量导入数据库的Python源码

    用于将终端证书文件批量导入进数据库 [注意]Python2和Python3,在数的进制转换上,不太一样 Python 2 content_str += binascii.hexlify(b) Pyth ...

  9. python处理完数据导入数据库_python操作数据库之批量导入

    python操作数据库之批量导入 Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进. Python具有丰富和强大的库.它常被昵称为胶水语言,能够把用其他语言制作的 ...

  10. ubuntu导入python的包_在ubuntu环境下怎么利用python将数据批量导入数据hbase

    斯蒂芬大帝 能够单条导入就能够批量导入配置 thriftpython使用的包 thrift个人使用的python 编译器是pycharm community edition. 在工程中设置中,找到pr ...

最新文章

  1. 2022-2028年中国聚碳酸亚丙酯(PPC)行业市场深度分析及未来趋势预测报告
  2. python插入排序演示源码
  3. web项目启动,运行方法
  4. TRTC助力高并发、高可用实时音视频互动场景落地(内含开发福利)
  5. java备份还原mysql数据库_Java备份还原Mysql数据库
  6. Python Numpy 数组的初始化和基本操作
  7. SpringCloud Hoxton版微服务- Ribbon实现负载均衡
  8. Django中的视图(view)
  9. 查询成绩最好的前两名_官宣!CPA考试成绩查询时间+合格标准+查询入口+成绩复核!注会考生查分前不看亏大了...
  10. 巩固——React中如何使用判断?
  11. Super Socks5cap使用教程
  12. 008 计算某一日是这一年的第几天
  13. 计算机字体在哪里调整,电脑字体太小怎么调 电脑字体调整方法【图文】
  14. 5W1H聊开源之Who——谁“发明”了开源?
  15. 机械设备行业:工业气体企业财务分析
  16. 我与我的专业计算机网络作文,我与网络的作文
  17. SteamVR 2.x UGUI交互系统(7)
  18. 一个完整的SEO优化方案
  19. 图片纯前端JS压缩的实现
  20. Python批量下载Bilibili(B站)1080P60fps视频-pip打包安装

热门文章

  1. CVE-2021-1675 Print Spooler漏洞复现远程执行及提权
  2. 状态反馈不改变系统传递函数零点的证明
  3. 腾讯云、声网、快手抢跑视频云
  4. 迷你KMS mini-KMS_Activator_v1.3_Office2010_VL_ENG使用
  5. 23种设计模式(4):模板模式
  6. Kindle下载字典
  7. 在 VM的CentOS 中 安装 sspanel 宝塔面板 总结
  8. ns手柄pc驱动_功能特点可以打满屏!北通宙斯白金版无线游戏手柄体验
  9. 字体磅数与字号对照表
  10. 雷云Razer Synapse2.0使用测评 -第二次作业