python自动化办公之python操作PPT
1、pythonpptx模块简介
使用python操作PPT,需要使用的模块就是pythonpptx,下面来对该模块做一个简单的介绍。这里提前做一个说明:python操作PPT,最好是我们提前设计好自己的一套样式,然后利用进行python进行内容的获取和填充(最主要的功能!),最好是不用使用python代码操作PPT的格式,格式的修改肯定不如我们直接在PPT中修改方便。
2、模块的安装与导入
1)模块的安装Windows用户命令行下输入pipinstallpythonpptxMac用户命令行下输入pip3installpythonpptx
2)模块的导入
这里有一点需要注意的是:安装的库是pythonpptx,但是导入的时候却有点不同。importpptx
3、python读取PPT文档中的内容
1)PPT的结构说明
在使用python操作PPT之前,首先应该清楚PPT的结构,这个对于之后代码的编写很有帮助
2)获取SlidefrompptximportPresentationprsPresentation(统计学习方法PPT。pptx)forslideinprs。slides:print(slide)
结果如下:
3)获取Shape形状importpptxfrompptximportPresentationprsPresentation(统计学习方法PPT。pptx)forslideinprs。slides:forshapeinslide。shapes:print(shape)注意:这里得到的Shape对象,并不能看出什么,接着往下看。
结果如下:
4)判断每个Shape中是否存在文字shape。hastextframe:是否有文字shape。textframe:获取文字框importpptxfrompptximportPresentationprsPresentation(统计学习方法PPT。pptx)forslideinprs。slides:forshapeinslide。shapes:ifshape。hastextframe:textframeshape。textframeprint(textframe。text)
结果如下:
5)获取某一页Slide中的内容importpptxfrompptximportPresentationprsPresentation(统计学习方法PPT。pptx)fori,slideinenumerate(prs。slides):ifi5:forshapeinslide。shapes:ifshape。hastextframe:textframeshape。textframeprint(textframe。text)
结果如下:
6)获取Shape中的某个ParagraphimportpptxfrompptximportPresentationprsPresentation(统计学习方法PPT。pptx)fori,slideinenumerate(prs。slides):ifi5:forshapeinslide。shapes:ifshape。hastextframe:textframeshape。textframeforparagraphintextframe。paragraphs:print(paragraph。text)注意:该方法和上述4)中的方法一摸一样。上述方法是直接获取Shpae中的文字内容;下面这个更灵活,先获取每个Shape,然后在获取每个Shape中的paragraph;下面方式更好:因为我们可以针对paragraph,写一个判断条件,只获取第几个paragraph;
结果如下:
4、利用python像PPT中写入内容
1)幻灯片模板及占位符的概念
3)什么是版式?
这个概念在下面的效果中,会得以体现。其中prs。slidelayouts〔〕传入0表示获取的是第一个版式,传入1表示获取的是第二个版式,以此类推下去。
4)添加Slide和内容
这里就需要使用上述的自定义母版。因为毕竟是使用python操作PPT,我们可以定义好自己想要展示的PPT母版,然后借助代码完成PPT的内容写入操作。
占位符id的确认importpptxfrompptximportPresentationprsPresentation(空白。pptx)prs。slidelayouts〔〕表示的是ppt中不同的版式slideprs。slides。addslide(prs。slidelayouts〔0〕)forshapeinslide。placeholders:phfshape。placeholderformatprint(f{phf。idx}{shape。name}{phf。type})shape。textf{phf。idx}{shape。name}{phf。type}注意:做完这个操作,一定要记得保存一下!prs。save(电子奖状模板。pptx)上述打印结果如下:0Title1TITLE(1)这个表示标题占位符,id为013PicturePlaceholder2PICTURE(18)这个表示图片占位符,id为1314TextPlaceholder3BODY(2)这个表示正文内容占位符,id为1415TextPlaceholder4BODY(2)这个表示正文内容占位符,id为15我们一定要先知道每个空格的占位符id,才可以进行下面内容的填充。
效果如下:
PPT内容的填写importpptxfrompptximportPresentationprsPresentation(空白。pptx)slideprs。slides。addslide(prs。slidelayouts〔0〕)nameslide。placeholders〔14〕whyslide。placeholders〔15〕name。text黄同学why。text学习太积极prs。save(内容填充。pptx)
效果如下:
5)添加段落
占位符id的确认importpptxfrompptximportPresentationprsPresentation(finall。pptx)slideprs。slides。addslide(prs。slidelayouts〔0〕)forshapeinslide。placeholders:phfshape。placeholderformatprint(f{phf。idx}{shape。name}{phf。type})shape。textf{phf。idx}{shape。name}{phf。type}print()slideprs。slides。addslide(prs。slidelayouts〔1〕)forshapeinslide。placeholders:phfshape。placeholderformatprint(f{phf。idx}{shape。name}{phf。type})shape。textf{phf。idx}{shape。name}{phf。type}prs。save(哈哈。pptx)
效果如下:
段落的添加importpptxfrompptximportPresentationprsPresentation(finall。pptx)slideprs。slides。addslide(prs。slidelayouts〔0〕)nameslide。placeholders〔14〕whyslide。placeholders〔15〕name。text黄同学why。text学习太积极prs1Presentation(finall。pptx)slide1prs。slides。addslide(prs。slidelayouts〔1〕)shapesslide1。shapestitleshapeshapes。title这句代码可以改为titleshapeshapes。placeholders〔0〕bodyshapeshapes。placeholders〔1〕titleshape。text这是一个标题tfbodyshape。textframe这句代码就是给body占位符添加内容!tf。text带圆点的符号1ptf。addparagraph()这个代码表示在原来的基础上,添加第一个段落!p。text带圆点的符号2ptf。addparagraph()这个代码表示在原来的基础上,添加第二个段落!p。text带圆点的符号3prs。save(嘿嘿。pptx)
效果如下:
给段落设定层级关系importpptxfrompptximportPresentationprsPresentation(finall。pptx)slideprs。slides。addslide(prs。slidelayouts〔0〕)nameslide。placeholders〔14〕whyslide。placeholders〔15〕name。text黄同学why。text学习太积极prs1Presentation(finall。pptx)slide1prs。slides。addslide(prs。slidelayouts〔1〕)shapesslide1。shapestitleshapeshapes。title这句代码可以改为titleshapeshapes。placeholders〔0〕bodyshapeshapes。placeholders〔1〕titleshape。text这是一个标题tfbodyshape。textframetf。text带圆点的符号1ptf。addparagraph()p。text带圆点的符号2原始内容的层级相当于是0,因此这个段落我设置为层级1,下面的段落设置为层级2p。level1ptf。addparagraph()p。text带圆点的符号3p。level2prs。save(嘻嘻。pptx)
效果如下:
添加一个文本框slide。shapes。addtextbox(left,top,width,height)frompptximportPresentationfrompptx。utilimportCm,PtprsPresentation()使用第一个版式blackslidelayoutprs。slidelayouts〔0〕slideprs。slides。addslide(blackslidelayout)lefttopwidthheightCm(3)textboxslide。shapes。addtextbox(left,top,width,height)tftextbox。textframetf。text这是一段文本框里面的文字ptf。addparagraph()p。text这是第二段文字,加粗,字号40p。font。boldTruep。font。sizePt(40)prs。save(添加一个文本框0。pptx)
效果如下:
添加一个图片slide。shapes。addpicture(图片路径,距离左边,距离顶端,宽度,高度)
第一种展示:frompptximportPresentationfrompptx。utilimportCmprsPresentation()使用第七个版式blackslidelayoutprs。slidelayouts〔6〕slideprs。slides。addslide(blackslidelayout)lefttopCm(3)picslide。shapes。addpicture(孙悟空。png,left,top)prs。save(添加图片1。pptx)
效果如下:
第二种展示:frompptximportPresentationfrompptx。utilimportCmprsPresentation()使用第七个版式blackslidelayoutprs。slidelayouts〔6〕slideprs。slides。addslide(blackslidelayout)lefttopCm(3)heightCm(5。5)picslide。shapes。addpicture(孙悟空。png,left,top,heightheight)prs。save(添加图片2。pptx)
效果如下:
添加表格shapes。addtable(rows,cols,left,top,width,height)frompptximportPresentationfrompptx。utilimportCm,PtprsPresentation()使用第七个版式blackslidelayoutprs。slidelayouts〔6〕slideprs。slides。addslide(blackslidelayout)shapesslide。shapesrows,cols5,3lefttopCm(5)widthCm(18)heightCm(3)tableshapes。addtable(rows,cols,left,top,width,height)。tabletable。columns〔0〕。widthCm(6)table。columns〔1〕。widthCm(2)table。columns〔2〕。widthCm(2)table。rows〔0〕。heightCm(2)data〔〔姓名,性别,成绩〕,〔张三,男,96〕,〔李四,女,87〕,〔王五,女,90〕,〔赵六,男,78〕〕forrowinrange(rows):forcolinrange(cols):table。cell(row,col)。textstr(data〔row〕〔col〕)prs。save(插入表格。pptx)
结果如下:
5、PPT文档内容样式批量调整
1)文本框位置的调整
上面我们已经知道怎么添加文本框,现在我们需要做的就是,怎么调整文本框的位置。frompptximportPresentationfrompptx。utilimportCm,Ptfrompptx。enum。textimportMSOANCHOR,MSOAUTOSIZEprsPresentation()使用第七个版式blackslidelayoutprs。slidelayouts〔6〕slideprs。slides。addslide(blackslidelayout)lefttopwidthheightCm(3)textboxslide。shapes。addtextbox(left,top,width,height)tftextbox。textframetf。text这是一段文本框里面的文字tf。marginbottomCm(0。1)下边距tf。marginleft0下边距一定要导入MSOANCHOR这个库tf。verticalanchorMSOANCHOR。BOTTOM对齐文本方式:底端对齐tf。wordwrapTrue框中的文字自动换行prs。save(文本框样式的调整。pptx)
结果如下:
2)文本框背景颜色调整frompptximportPresentationfrompptx。utilimportCm,Ptfrompptx。enum。textimportMSOANCHOR,MSOAUTOSIZEfrompptx。dml。colorimportRGBColorprsPresentation()使用第七个版式blackslidelayoutprs。slidelayouts〔6〕slideprs。slides。addslide(blackslidelayout)lefttopwidthheightCm(3)textboxslide。shapes。addtextbox(left,top,width,height)tftextbox。textframetf。text这是一段文本框里面的文字tf。marginbottomCm(0。1)下边距tf。marginleft0下边距tf。verticalanchorMSOANCHOR。BOTTOMtf。wordwrapTrue框中的文字自动换行filltextbox。fillfill。solid()使用之前一定要导入RGBColor这个库fill。forecolor。rgbRGBColor(247,150,70)prs。save(文本框背景色的调整。pptx)
结果如下:
3)文本框边框样式调整frompptximportPresentationfrompptx。utilimportCm,Ptfrompptx。enum。textimportMSOANCHOR,MSOAUTOSIZEfrompptx。dml。colorimportRGBColorprsPresentation()使用第七个版式blackslidelayoutprs。slidelayouts〔6〕slideprs。slides。addslide(blackslidelayout)lefttopwidthheightCm(3)textboxslide。shapes。addtextbox(left,top,width,height)tftextbox。textframetf。text这是一段文本框里面的文字tf。marginbottomCm(0。1)下边距tf。marginleft0下边距tf。verticalanchorMSOANCHOR。BOTTOMtf。wordwrapTrue框中的文字自动换行filltextbox。fillfill。solid()使用之前一定要导入RGBColor这个库fill。forecolor。rgbRGBColor(247,150,70)linetextbox。lineline。color。rgbRGBColor(255,0,0)line。widthCm(0。3)prs。save(文本框边框样式调整。pptx)
结果如下:
4)段落对其调整frompptximportPresentationfrompptx。enum。textimportPPALIGNprsPresentation()使用第七个版式blackslidelayoutprs。slidelayouts〔6〕slideprs。slides。addslide(blackslidelayout)lefttopwidthheightCm(3)textboxslide。shapes。addtextbox(left,top,width,height)tftextbox。textframeptf。addparagraph()p。text这是第二段文字p。alignmentPPALIGN。LEFTprs。save(段落对其调整。pptx)
当然这里还有一些其他样式的调整,和word很类似,就不一一叙述了。
5)字体样式调整
代码如下:frompptximportPresentationfrompptx。utilimportCm,Ptfrompptx。enum。textimportMSOANCHOR,MSOAUTOSIZEfrompptx。dml。colorimportRGBColorfrompptx。enum。textimportPPALIGNprsPresentation()使用第七个版式blackslidelayoutprs。slidelayouts〔6〕slideprs。slides。addslide(blackslidelayout)lefttopwidthheightCm(3)textboxslide。shapes。addtextbox(left,top,width,height)tftextbox。textframeptf。addparagraph()p。text这是第二段文字p。alignmentPPALIGN。LEFTp。font。boldTruep。font。name宋体p。font。color。rgbRGBColor(247,150,70)p。font。sizePt(30)prs。save(字体样式调整。pptx)
结果如下:
本田版宏光mini,复古灯双色车身液晶后视镜,续航200公里对于我们熟悉的家用新能源小型车,可以说如今国产版本的五菱宏光mini以及奇瑞小蚂蚁等车型都已经成为了标杆,而相比这些车型来说,今天要与大家分享的这台来自本田汽车的家用新能源,纯……
清风朗月花正开什么时候播出,清风朗月花正开演员表清风朗月花正开说出来很多人不清楚,可清风朗月花正开电视剧是什么时候播出,很多网友就想去了解一下有关的故事,看清风朗月花正开提早宣传相关海报和预告片,来让观众熟悉剧情,但有的网友……
有没有什么学习软件推荐?10款超适合学生使用的学习app,90的同学都在使用!1、我的倒计时(iOSAndroid)学习前先做好个人暑假的时间规划,精确到秒的倒计时,可以设置反复提醒时间,……
如果声音有记忆什么时候上映,如果声音有记忆演员表如果声音有记忆说出来很多人不清楚,可如果声音有记忆电视剧是什么时候上映,很多网友就想去了解一下有关的故事,看如果声音有记忆提前公布相关海报和预告,来让观众熟悉剧情,但有的网友就……
密室逃生2什么时候在中国上映,密室逃生2演员表密室逃生说出来很多人不清楚,可密室逃生2电影是什么时候在中国上映,很多网友就想去了解一下有关的故事,看密室逃生第二部提早公布相关的海报和预告片,来让观众熟悉剧情,但有的网友就不……
淘金什么时候上线,淘金演员表淘金说出来很多人不清楚,可淘金电视剧是什么时候上线,很多网友就想去了解一下有关的故事,看淘金提早公布相关的人物海报和预告片,来让观众能熟悉所要上演大概的剧情,但有的网友就不清楚……
对手黄海结局,对手黄海的扮演者对手说出很多人不清楚,可对手黄海发生什么样的结局,很多网友就想去了解一下有关的故事,看对手剧情中把黄海结局做好铺垫,不过初期没有太明显,后期把精彩的效果给展现,但有的网友就不清……
对手朱慧结局,对手朱慧扮演者对手说出很多人不清楚,可对手剧中朱慧发生什么样的结局,很多网友就想去了解一下有关的故事,看对手提前把朱慧结局给做好铺垫,本来有情人成为眷属,不过多种原因没在一起,但有的网友就不……
风起洛阳百里延为什么被杀,风起洛阳百里延扮演者风起洛阳说出很多人不清楚,可风起洛阳剧中百里延到底是为什么被杀,很多网友就想去了解一下有关的故事,看风起洛阳里面的百里延被杀后,引出众多的问题,过后需要逐步揭秘,但有的网友就不……
奇异博士2上映时间,奇异博士2讲的是什么奇异博士说出来很多人不清楚,可奇异博士2电影的上映时间,很多网友就想去了解一下有关的故事,看奇异博士第二部提早发布相关的海报和预告片,来让观众熟悉大概的剧情,但有的网友就不清楚……
千元机和旗舰机到底有什么区别?其实没区别只是厂商的智商税?文小伊评科技正所谓一分价钱一分货,千元机和旗舰机的差别区别大了去了,当然不是智商税,尤其是在当下这个手机市场格外透明的时代,想要通过智商税来赚钱的手机厂商早就倒闭了,接下……
问天是什么电视剧,问天演员表问天说出来很多人不清楚,可问天到底会是什么样的电视剧,很多网友就想去了解一下有关的故事,看问天给来给观众介绍如何把飞天梦想,经过长年努力的奋斗,才把梦想变成现实,但有的网友就不……