
PPT批量导⼊⽂字(Python实现)
需求:⽬前有⼀份Excel表格,⾥⾯有姓名和英⽂名两列数据。需要根据这些数据⽣成200张左右的荣誉证书,放在⼀个pptx⽂件
中。
表格部分截图:
ppt模板截图:
(上⽅占位符写中⽂名,下⽅写英⽂名)
⼀、基础知识
的母版
⾸先新建⼀个pptx⽂件。
点击“视图->幻灯⽚母版”
选择第⼀张底下的所有版式,按delete键删除,选择第⼀张内部的所有内容,删除。最后应该是这样,⼲⼲净净的:
点击:插⼊版式,删掉⾃带的标题⽂本框
为简明起见,这⾥只插⼊两个占位符,分别表⽰中⽂名和英⽂名。有需要者可以加⼊更多的占位符,也可以⾃⾏调整背景、字体等。
插⼊占位符的时候,记得删除⾥⾯的所有内容。按两次退格键即可删⼲净,最后,占位符⾥⾯会显⽰“对象”,这是正常的。
按ctrl+s保存并退出。
2.必要的python知识
python当前的最新版本是3.10,但python存在严重的向下不兼容问题,因此不推荐使⽤太⾼的版本。
python的选择结构:
python的循环结构:
1score=70
2if(score>90):
3print('优秀')
4elif(score>60):
5print('及格')
6el:
7print('不及格')
括号是左闭右开的,不包括右边界。
python的列表:⽤[]定义,⽤下标访问。列表相当于Java、C++的数组,下标以0开始。
python的字典:⽤{}定义,⽤变量名[key]访问。
⼆、环境搭建
1.下载python
搜索python3.6,进⼊官⽹下载
等待⽚刻,出来这个页⾯,向下滚动,直到看到⼀个表格:
1foriinrange(0,4):
2print(i)
3
4#结果
5#0
6#1
7#2
8#3
1arr=['Tom',12]
2print(arr[0])
3print(arr[1])
1dict={}#初始化字典
2dict["Tom"]=12#添加键值对
3print(dict["Tom"])#通过key访问value
4
5#12
6
7
8
9#本题中涉及的操作
10dict1={}
ault("Tom",[])#添加key为"Tom",值为默认值[](⼀个空数组)的键值对
12dict1["Tom"].append(12)#访问到"Tom"对应的数组,为数组添加元素
13print(dict1["Tom"])
14
15#[12]
点击,等待下载完成即可。
双击允许下载好的安装程序。
先勾选最下⾯的框,然后点⾃定义安装。
点击next
这⼀步需要⾃⼰改⼀下安装路径,我放在D盘下的python3.6⽂件夹下。
等待安装完成,重启电脑即可。
2.安装pycharm
搜索pycharm,直接点download即可。
有两个选项,选右边的社区版。
等待下载完成,双击打开安装程序。
第⼀步next,然后选择安装路径,这⾥装在D盘下。
next,全部打勾。
⼀路next即可,等待安装完成。
3.创建⼯程
运⾏pycharm,弹出这个窗⼝,点OK。
点击newproject
点location右边的⼩⽂件夹,修改⼯程路径。这个路径⼀定要能⽅便地找到!
其他的不⽤修改,因为pycharm已经检测到安装好的python3.6。
点击create,⽬前的界⾯是这样。
三、测试代码
粘贴以上代码到中,不出意外,会报4个错。这是因为没有安装对应的包导致的。
1frompptximportPrentation
2prs=Prentation('data模板.pptx')
3
4slide=_slide(_layouts[0])#第⼀个模板的第0个板式
olders:#遍历这页PPT的所有占位符
6phf=older_format#获取占位符的格式
7print()#打印其ID编号
=str()#将编号写⼊PPT对应的位置中,以便后⾯⼀⼀对应
9#以上读取到占位符的ID⽅便后⾯调⽤
('data模板-占位符编号.pptx')
11
12
13fromopenpyxlimportload_workbook
14wb=load_workbook("data表格.xlsx")
15ws=
16data={}
17forrowinrange(1,_row+1):
18class_id=ws['A'+str(row)].value
19name=ws['B'+str(row)].value
ault(class_id,[])
21data[class_id].append(name)
22
23
24importtime
25t0=()#程序开始运⾏的时间
26
27prs=Prentation('data模板.pptx')
28
29slide_layout=_layouts[0]#调⽤设置好的母版,因为是母版的第⼀版式,所以取[0]
30
31forclass_idindata:
32
33fornameindata[class_id]:
34slide=_slide(slide_layout)#以母版的版式为基础新增⼀页幻灯⽚
35#往幻灯⽚中写⼊内容
olders[11].text=class_id#班级
olders[12].text=name#名字
38
('data总计.pptx')
40t1=()
41
42print('程序⽤时:',str(round(t1-t0))+'秒。')
将光标移到openpyxl上,点击安装即可。
这时,还有两个错误未解决,需要我们⼿动安装第三⽅包。
File->Settings
Project:xxx->PythonInterpreter
点击加号
搜索框中输⼊python-pptx,点击安装,只安装这个包即可。
等待⽚刻,所有错误都应该已经解决。
打开刚刚创建项⽬的⽂件夹,新建⽂件夹,名字为data。
将准备好的模板.pptx、表格.xlsx粘贴到data⽂件夹⾥⾯。
以下内容与占位符原理有关,如果只想运⾏代码,可以跳过
占位符
先将第10⾏以下的内容全部注释。注释的⽅法是:选中第10⾏以下的内容,然后按ctrl+/
然后在代码窗⼝中按右键,点击Run'main'。
回到刚才的data⽂件夹,打开新⽣成的模板-占位符编号.pptx
没有看到任何内容,很正常,点击关闭母版视图即可。
其中的12、11就是占位符编号。⽤olders[占位符编号]即可访问这些占位符。
可以根据这些编号修改源码,控制各个占位符⾥应写⼊的⽂字。
然后,选中第⼗⾏以下的区域,按下ctrl+/解除注释。
(接上⽂)
在代码窗⼝按右键,点击Run'main'
出现这些内容,表⽰运⾏成功。
打开⽣成的总计.pptx进⾏检查:
⽣成了399张不同的幻灯⽚,达到了预期要求!
四、改进
1.在实际应⽤中,⼀个模板可能会有多个占位符,最好先根据上⽂的⽅法观察⼀下占位符编号再决定数据写⼊的位置
2.⼀个母版可能会有多个附属的模板,就像这样:
这些模板以0开始,可以这样访问:
实际应⽤可以实现这样⼀种效果:表格的前170⾏使⽤第⼀个模板,后⾯的使⽤第⼆个模板
3.表格的⾏(row)是从1开始的,因此如果有表头,那么读取时应从第⼆⾏开始。
以下是程序所⽤的表格和模板:
链接:https:加上///s/1D2Qck3lfbKJVDYh1EzNbnA
提取码:e534
1if(cnt<170):
2slide_layout=_layouts[0]#第0个模板
3el:
4slide_layout=_layouts[1]#第1个模板
1#有表头的情况
2forrowinrange(2,_row+1):
3class_id=ws['A'+str(row)].value
4name=ws['B'+str(row)].value
ault(class_id,[])
6data[class_id].append(name)
本文发布于:2023-03-15 18:42:34,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/167887695429793.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:pptx文件.doc
本文 PDF 下载地址:pptx文件.pdf
| 留言与评论(共有 0 条评论) |