办公自动化-ppt的创建实操-各个对象的理解-0223_presentation.slides 屬性_pyhui2020的博客-程序员秘密

对象关系汇总

属性slides
属性slide_layouts
方法save需要
其中一个
方法add_slide需要
得到
属性shapes
属性placeholders
属性title
方法add_textbox需要
得到
属性text_frame
方法add_paragraph
属性text
取其一
属性text需要
相同性质
属性text_framd
方法add_paragraph
属性text需要
属性font
属性bold需要
属性size需要
属性underline需要
PPT文档
演示文档容器
幻灯片格式十一个-类似于列表
文件保存路径.pptx
单个幻灯片模板
幻灯片页面
页面形态对象
占位符多个
占位符单个-标题
左上宽高四个尺寸对象-Inches类实例需要int
文本盒子
文本框:文本盒子的
段落:文本框:文本盒子的
内容str
占位符单个
内容str
文本框对象-占位符的
段落对象-文本框对象-占位符的
内容str
段落字体
布尔值bool
Pt类对象参数int

目标

来一个幻灯片的生成

安装模块

pip install python-pptx

认识三个对象

import pptx

# ppt文档对象
ppt = pptx.Presentation()
# 幻灯片容器
slides = ppt.slides
# 获得一个版式
page = ppt.slide_layouts[1]


在这里插入图片描述

slide_layouts[1]为带标题和正文框的ppt,slide_layouts[6]为空白页ppt

演示文档容器添加一页

import pptx

# ppt文档对象
ppt = pptx.Presentation()
# 演示文档容器
slides = ppt.slides
# 获得一个版式
layout1 = ppt.slide_layouts[1]
# 容器添加一个版式
print(len(slides))
slides.add_slide(layout1)
print(len(slides))



在这里插入图片描述

文件的保存

ppt.save('test.pptx')

在这里插入图片描述

版式为2时

import pptx

# ppt文档对象
ppt = pptx.Presentation()
# 演示文档容器
slides = ppt.slides
# 获得一个版式
layout1 = ppt.slide_layouts[2]
# 容器添加一个版式
print(len(slides))
slides.add_slide(layout1)
print(len(slides))


ppt.save('test2.pptx')

在这里插入图片描述

版式的规律寻找

对着演示来看,一共十一个

在这里插入图片描述

我们试试序号七的结构,验证一下猜测

版式七的效果

在这里插入图片描述

与猜测相符

获得所有的文本框

版式一有两个占位符

在这里插入图片描述

占位符添加内容

在这里插入图片描述

import pptx

# ppt文档对象
ppt = pptx.Presentation()
# 演示文档容器
slides = ppt.slides
# 获得一个版式
layout1 = ppt.slide_layouts[1]
# 容器添加一个版式
page = slides.add_slide(layout1)
# 获得所有的占位符
placeholders = page.shapes.placeholders
# 给占位符添加内容
placeholders[0].text = '这是标题的位置'
placeholders[1].text = '这是正文的内容/n可以吗'




ppt.save('test1.pptx')

标题是一个占位符

标题占位符的两种对象获取方式

在这里插入图片描述

文本框对象与段落对象

占位符对象具有文本框对象

文本框里面可以有多个段落

在这里插入图片描述

让正文占位符里有多个文本对象

import pptx
from pptx.util import Pt

# ppt文档对象
ppt = pptx.Presentation()
# 演示文档容器
slides = ppt.slides
# 获得一个版式
layout1 = ppt.slide_layouts[1]
# 容器添加一个版式
page = slides.add_slide(layout1)
# 获得所有的占位符
placeholders = page.shapes.placeholders
# 给占位符添加内容
placeholders[0].text = '这是标题的位置'
placeholders[1].text = '这是正文的内容'
# 文本框对象(占位符一的)
text_frame = placeholders[1].text_frame
# 段落对象(文本框的)
paragraph = text_frame.add_paragraph()
paragraph2 = text_frame.add_paragraph()
# 给段落对象添加内容
paragraph.text = '第一个段落内容'
paragraph2.text = '第二个段落内容'
#  段落的样式
paragraph.font.bold = True
paragraph2.font.size = Pt(15)
paragraph2.font.underline = True

ppt.save('test1.pptx')

在这里插入图片描述

文本框对象的演练

在这里插入图片描述

代码

import pptx

# ppt文档对象
from pptx.util import Pt, Inches

ppt = pptx.Presentation()
# 演示文档容器
slides = ppt.slides
# 获得一个版式
layout1 = ppt.slide_layouts[1]
# 容器添加一个版式
page = slides.add_slide(layout1)
# 获得所有的占位符
placeholders = page.shapes.placeholders
# 给占位符添加内容
placeholders[0].text = '这是标题的位置'
placeholders[1].text = '这是正文的内容'
# 文本框对象(占位符一的)
text_frame = placeholders[1].text_frame
# 段落对象(文本框的)
paragraph = text_frame.add_paragraph()
paragraph2 = text_frame.add_paragraph()
# 给段落对象添加内容
paragraph.text = '第一个段落内容'
paragraph2.text = '第二个段落内容'
#  段落的样式
paragraph.font.bold = True
paragraph2.font.size = Pt(15)
paragraph2.font.underline = True
# 文本框对象
left = Inches(6)  # 左
top = Inches(2)  # 顶
width = Inches(4)  # 宽
height = Inches(4)  # 高
textbox = page.shapes.add_textbox(left,top,width,height)
# 文本框的内容
# textbox.text = "这是文本框的内容这是文本框的内容这是文本框的内容"
# 文本框的段落
para = textbox.text_frame.add_paragraph()
para.text = "文本框的段落内容文本框的段落内容文本框的段落内容文本框的段落内容"

ppt.save('test222.pptx')

在这里插入图片描述

存在的问题
虽然给文本框设定了一个宽度和高度,但是里面的内容仍然会超出它的边界,这个问题需要解决

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ifubing/article/details/104480851

智能推荐

PHP foreach使用 &引用 的坑_L瑜的博客-程序员秘密

在PHP中,array是最常用的结构了,可以当做队列、堆栈、hash等结构使用,所以遍历array最常用的foreach循环,我们用得很多,但其实foreach循环中有一个隐藏的坑,如下代码: <?php$arr = [1,2,4];foreach($arr as &$a){ $a = $a*$a;}print_r($arr);foreach($arr as $a){ print_

一些vc开发浏览器及插件的资料_hnkfwhw的博客-程序员秘密

如何往IE工具条添加按钮问题提出:金山词霸、网络蚂蚁等软件安装后会向IE的工具条添加自己的按钮。按下按钮后还会作出相应的动作,这种功能是如何实现的呢?读完本文,您也可以将自己应用程序的按钮添加到IE的工具条中。基本原理:从IE5开始便允许我们向工具栏添加自己的按钮,其本质就是修改注册表,添加创建此按钮所需的信息。实现步骤:1.创建此按钮的GUID(globally uniq...

技术总结—基于SSH的项目开发_ssh开发_yelloweyes的博客-程序员秘密

技术总结—基于SSH的项目开发 1语言和工具在这次实训开发的系统中,我们才用J2EE开发,主要用到了JAVA、JSP相关技术。我们是基于MyEclipse平台开发的,采用了j2ee+MySql开源数据库,这些开源的工具有利于节约成本。不过这些工具还是比不上微软的强大,很多东西都没微软那么规范,毕竟是开源的,象一些报错一样,微软的参考文档是很出色。JAVA还有很多待改善的地方。但用起

Android 横向列表GridView 实现横向滚动_weixin_30713953的博客-程序员秘密

Android 横向列表实现,可左右滑动,如下图1.主界面布局代码:activity_main.xmla.包裹HorizontalScrollView控件是GirdView横向滚动的基本条件b.GirdView外包裹LinearLayout是java代码中参数设置的必要条件&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;...

修改Tomcat端口号、设置虚拟路径、tomcat服务器默认访问地址_tomcat项目访问地址_什么时候能有钱的博客-程序员秘密

修改Tomcat端口号设置虚拟路径方法1(修改配置文件):在Tomcat7的安装目录下找到conf目录,在该目录下有一个server.xml文件,这个文件的任务是配置整个服务器信息。例如修改端口号,添加虚拟主机…… 打开这个文件,找到HOST标签,在这个标签中处插入以下代码:&lt;Context path="/yang" docBase="f:\mysite1\xxx.war" deb...

Visual Studio无法查找或打开 PDB 文件解决办法_Tsingke的博客-程序员秘密

&#13;Visual Studio无法查找或打开 PDB 文件解决办法&#13;&#13;用VS调试程序时,有时会在VS底部的“输出”框中提示“无法查找或打开 PDB 文件”。这该怎么解决呢?&#13;&#13;&#13;&#13;&#13;&#13;&#13;下面,我们以VS2013为例,来教大家解决办法。&#13;&#13;&#13;&#13;&#1...

随便推点

Window 10 改护眼色_一只小菜鸟(* ̄︶ ̄)的博客-程序员秘密

1、打开注册表:win+R“regedit”确定;2、依次打开[HKEY_CURRENT_USER\Control Panel\Colors], 把Windows的值改为“202 234 206”3、依次打开[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\DefaultColors\Standard],双击W...

libcurl 接口调用方式_weixin_34377919的博客-程序员秘密

http://hi.baidu.com/tracyu1026/item/bb6d5def4292b10b570f1d48 libcurl提供了一组C语言API函数直接调用。首先需要提到的两个函数就是curl_global_init()和 curl_global_cleanup()。libcurl要用到一系列的全局常量,curl_global_init()函数就是初始化这些变量,并分配一些全...

Redis IO多路复用技术以及epoll实现原理_io多路复用的原理和实现_wxy941011的博客-程序员秘密

redis 是一个单线程却性能非常好的内存数据库, 主要用来作为缓存系统。 redis 采用网络IO多路复用技术来保证在多连接的时候, 系统的高吞吐量。为什么 Redis 中要使用 I/O 多路复用这种技术呢?首先,Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以 I/O 操作在一般情况下往往不能直接返回,这会导致某一文件的 I/O...

Java基础篇之IO流(2021)_一个软工考研er的博客-程序员秘密

文章目录前言一、IO流1 input/output 输入输出流1.1 File的三种常用方式二、使用步骤1.引入库2.读入数据总结前言一、IO流1 input/output 输入输出流1.1 File的三种常用方式格式: File file=new File("要创建的文件路径"); File file1=new File(字符串类型"在那个文件夹路径","在前面的文件夹中创建什么文件"); File file2=new File(File类型 file[在那个File类中的文件.

IDEA下使用JDBC连接数据库遇到java.lang.ClassNotFoundException: com.mysql.jdbc.Driver_qq_34890544的博客-程序员秘密

java.lang.ClassNotFoundException: com.mysql.jdbc.Driverat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$A

36. 面向对象的LotusScript(八)之继承_ls.snapps.jsonreader_starrow的博客-程序员秘密

继承是面向对象思想里的一个重要概念和特点。但是用LotusScript开发时,即使采用面向对象的技术,也很少使用类的继承。主要是因为,LotusScript要解决的问题范围比较狭窄,也不算复杂,所以通常一个或几个自定义类就能完全,不需要构建复杂的类的体系。不过当LotusScript的开发大部分都转为类的开发时,也有一些情况,会需要应用继承。这些情况,大部分和其他面向对象的语言之所以应用继承一

推荐文章

热门文章

相关标签