添加和替换演示文稿内容
要使用 PPT API 添加或替换 PowerPoint® 演示文稿中的内容:
设置一个 PowerPoint 模板来保存您想要添加或替换的演示内容。
创建 PPT API 内 容对象,例如
Paragraph
、Table
、Picture
对象。使用 PPT API 内容对象添加或替换演示文稿内容。
您可以通过多种方式添加和替换内容。例如,您可以:
在演示文稿中全局添加或替换内容或在特定幻灯片中局部添加或替换内容。
将内容添加到文本框。
用相同类型的内容替换文本框、表格或图片。
用与占位符对应的内容替换占位符。
您不能替换段落、表格或文本框的一部分。替换整个内容对象。
设置模板
您可以替换或添加内容到现有的 PowerPoint 演示文稿,而无需修改模板。但是,使用 PPT API 需要了解模板和幻灯片对象,包括:
幻灯片母版名称
幻灯片布局名称
幻灯片占位符和内容对象名称
表格样式名称
您可以使用 PowerPoint 向演示文稿添加占位符,然后使用 PPT API 将占位符替换为内容。要替换演示文稿中的特定内容对象,您可以使用 PowerPoint 为内容对象赋予唯一的名称。然后将这个名称与 PPT API 一起使用。
有关将 PowerPoint 模板与 PPT API 程序结合使用的更多信息,请参阅:
替换内容
您可以通过在 replace
方法中使用 Slide
对象指定内容对象名称来替换内容。例如,在默认的 PPT API 模板中,标题幻灯片 布局有一个名为标题
的内容对象。
titleSlide = add(ppt,'Title Slide'); replace(titleSlide,'Title','This Is My Title');
要替换演示内容,您可以将 find
方法与 Presentation
或 Slide
对象一起使用。find
方法搜索 Name
属性值与您指定的搜索值匹配的内容对象。然后您可以使用想要更新的返回项目的索引。
ppt = Presentation('myPresentation'); titleSlide = add(ppt,'Title Slide'); contents = find(ppt,'Title'); replace(contents(1),'This Is My Title');
添加和替换文本
您可以使用这些方法在演示文稿中添加或替换文本。
文本规范技术 | 关联的 PPT API 对象 |
---|---|
指定文本作为创建这些对象的一部分。 |
|
将文本追加到段落。 | 将文本追加到这些 PPT API 对象:
|
替换演示文稿或幻灯片中的 | 为具有以下对象的
|
添加或替换占位符对象中的文本。 |
请参阅在占位符中添加和替换文本。 |
添加或替换文本框。 | 使用字符向量、 请参阅在文本框中添加或替换文本。 |
在占位符中添加和替换文本
您可以在 ContentPlaceholder
和 TextBoxPlaceholder
中添加或替换文本,指定:
字符向量
Paragraph
对象字符向量或
Paragraph
对象或字符向量和Paragraph
对象的组合的元胞数组。内部元胞数组指定内部列表(缩进)项。
幻灯片布局指定文本是否显示为段落、项目符号列表或编号列表。
import mlreportgen.ppt.* name1 = 'before'; ppt = Presentation(name1); open(ppt); add(ppt,'Comparison'); replace(ppt, 'Left Content', 'dummy content'); replace(ppt, 'Right Content', 'dummy content'); close(ppt); name2 = 'after'; slides = Presentation(name2, name1); lefts = find(ppt, 'Left Content'); rights = find(ppt, 'Right Content'); para = replace(lefts(1), 'Left item in the list' ); para.Italic = true; para.FontColor = 'green'; replace(rights(1), { ... 'Right List item', ... { 'Inner right list item', 'Other inner right list item' }... 'Right List item', ... }); close(ppt); rptview(ppt);
在文本框中添加或替换文本
幻灯片中的文本框是可以添加文本的框。您可以以编程方式添加或替换演示文稿中文本框的内容。
创建一个
TextBox
对象。指定文本框的位置和宽度。使用
add
方法和TextBox
对象添加文本。使用
add
方法和Presentation
对象或使用add
方法和Slide
对象将TextBox
对象添加到演示文稿中。
例如:
import mlreportgen.ppt.* ppt = Presentation('myPresentation.pptx'); open(ppt); titleSlide = add(ppt,'Title Slide'); tb = TextBox(); tb.X = '2in'; tb.Y = '2in'; tb.Width = '5in'; add(tb,'Text for text box'); add(titleSlide,tb); close(ppt);
添加或替换表格
要在演示文稿中添加或替换表格,请使用以下方法之一:
将表格直接添加到幻灯片中。
用表格替换幻灯片版式中的占位符。例如,添加具有
Title and Content
或Title and Table
布局的幻灯片,并用表格替换内容或表格占位符。用不同的表格替换模板演示中的模板表格。
将表格添加到空白幻灯片
创建一个 mlreportgen.ppt.Table
对象并将其添加到幻灯片中。
import mlreportgen.ppt.* ppt = Presentation('myPresentation.pptx'); open(ppt); tableSlide = add(ppt,'Blank'); magicTable = Table(magic(5)); magicTable.X = '3in'; magicTable.Y = '5in'; add(tableSlide,magicTable); close(ppt);
您可以使用 replace
方法替换已添加到幻灯片中的表格。例如:
import mlreportgen.ppt.* ppt = Presentation('myPresentation.pptx'); open(ppt); tableSlide = add(ppt,'Blank'); magicTable = Table(magic(5)); add(tableSlide,magicTable); newTable = Table(magic(4)); replace(magicTable,newTable); close(ppt);
替换表格占位符
您可以替换来自幻灯片布局的表格占位符。例如,添加具有 Title and Table
布局的幻灯片。表格占位符由 mlreportgen.ppt.TablePlaceholder
对象表示。要替换表格占位符,请使用 TablePlaceholder
对象的 replace
方法。
import mlreportgen.ppt.* ppt = Presentation('myPresentation.pptx'); open(ppt); tableSlide = add(ppt,'Title and Table'); table1 = Table(magic(9)); tblplaceholderObj = find(tableSlide,'Table'); replace(tblplaceholderObj,table1); close(ppt);
替换模板表
如果从现有演示文稿创建演示文稿,则现有演示文稿中的表(模板表)由 mlreportgen.ppt.TemplateTable
对象表示。您可以通过设置对象的属性来改变模板表的位置、宽度和高度。您还可以修改模板表的 XML 标记。要替换模板表,请使用 TemplateTable
对象的 replace
方法。例如,假设您根据现有演示文稿 myPresentation
创建一个演示文稿,该演示文稿的幻灯片布局为 'Title and Table'
。以下代码用另一个表替换模板表。
import mlreportgen.ppt.* ppt = Presentation('myNewPresentation.pptx','myPresentation.pptx'); open(ppt); slide1 = ppt.Children(1); templateTableObj = find(slide1,'Table'); replace(templateTableObj,Table(magic(4))); close(ppt);
添加或替换图片
要在演示文稿中添加或替换图片,请使用以下方法之一:
将图片直接添加到幻灯片中。
用图片替换幻灯片布局中的占位符。例如,添加具有
Title and Content
或Title and Picture
布局的幻灯片,并用图片替换内容或图片占位符。用不同的图片替换模板演示文稿中的模板图片。
在演示文稿中添加图片
使用 mlreportgen.ppt.Picture
对象在演示文稿中包含飞机图片。
创建演示文稿。
import mlreportgen.ppt.* ppt = Presentation("myPicturePresentation.pptx"); open(ppt);
在演示文稿中添加具有 Title and Content
布局的幻灯片。
add(ppt,"Title and Content");
使用飞机图像创建一个 Picture
对象。指定图片的大小。
plane = Picture(which("b747.jpg")); plane.Width = "5in"; plane.Height = "2in";
用图片替换幻灯片的内容。
replace(ppt,"Content",plane);
关闭并查看演示文稿。
close(ppt); rptview(ppt);
这是生成的带有飞机图像的幻灯片:
替换图片
替换演示文稿中的图片。
创建演示文稿。
import mlreportgen.ppt.* ppt = Presentation("myPictureReplacePresentation"); slide1 = add(ppt,"Blank");
创建 mlreportgen.ppt.Picture
对象。
plane = Picture(which("b747.jpg")); plane.X = "1in"; plane.Y = "1in"; plane.Width = "5in"; plane.Height = "2in";
将图片添加到幻灯片中。
add(slide1,plane);
创建第二张图片。
peppers = Picture(which("peppers.png")); peppers.X = "1in"; peppers.Y = "1in"; peppers.Width = "3in"; peppers.Height = "3in";
用辣椒图片替换飞机图片。
replace(plane,peppers);
关闭并查看演示文稿。
close(ppt); rptview(ppt);
用图片替换图片占位符
在演示文稿中添加 Title and Picture
幻灯片,然后用您自己的标题和图片替换标题和图片占位符。
导入 PPT 命名空间,这样您就不必对 PPT API 类使用长而完全限定的名称。
import mlreportgen.ppt.*
创建演示文稿。
ppt = Presentation("myPicturePlaceholderPresentation.pptx");
open(ppt);
添加具有 Title and Picture
布局的幻灯片。
slide = add(ppt,"Title and Picture");
使用幻灯片对象的 find
方法查找名为 Title
的占位符对象。
titlePlaceholderObj = find(slide,"Title")
titlePlaceholderObj = TextBoxPlaceholder with properties: Bold: [] Font: [] ComplexScriptFont: [] FontColor: [] FontSize: [] Italic: [] Strike: [] Subscript: [] Superscript: [] Underline: [] BackgroundColor: [] VAlign: [] Name: 'Title' X: [] Y: [] Width: [] Height: [] Style: [] Children: [] Parent: [1×1 mlreportgen.ppt.Slide] Tag: 'ppt.TextBoxPlaceholder:30:125' Id: '30:125'
find
方法返回一个 mlreportgen.ppt.TextBoxPlaceholder
对象。
用标题文本替换占位符内容。
replace(titlePlaceholderObj,"Airplane");
使用幻灯片对象的 find
方法查找名为 Picture
的占位符对象。
picturePlaceholderObj = find(slide,"Picture")
picturePlaceholderObj = PicturePlaceholder with properties: Bold: [] Font: [] ComplexScriptFont: [] FontColor: [] FontSize: [] Italic: [] Strike: [] Subscript: [] Superscript: [] Underline: [] BackgroundColor: [] VAlign: [] Name: 'Picture' X: [] Y: [] Width: [] Height: [] Style: [] Children: [] Parent: [1×1 mlreportgen.ppt.Slide] Tag: 'ppt.PicturePlaceholder:31:126' Id: '31:126'
find
方法返回一个 mlreportgen.ppt.PicturePlaceholder
对象。
用图片替换图片占位符。
replace(picturePlaceholderObj,Picture("b747.jpg"));
关闭并查看演示文稿。
close(ppt); rptview(ppt);
PowerPoint® 调整图片尺寸以适合图片占位符。如果图片占位符尺寸大于 Picture
对象尺寸,则图片会按比例拉伸。如果尺寸较小,则图片位于中央。
替换模板图片
如果从现有演示文稿创建演示文稿,则现有演示文稿中的图片(模板图片)由 mlreportgen.ppt.TemplatePicture
对象表示。您可以通过设置对象的属性来改变模板图片的位置、宽度和高度。您还可以修改模板图片的 XML 标
记。要替换模板图片,请使用 TemplatePicture
对象的 replace 方
法。例如,假设您根据现有演示文稿 myPresentation
创建一个演示文稿,该演示文稿的幻灯片布局为 'Title and Picture'
。以下代码将模板图片替换为不同的图片。
生成演示文稿 MyPicturePresentation
,然后将其用作另一个演示文稿的模板演示文稿。MyPicturePresentation
有一张幻灯片和一张图片。
import mlreportgen.ppt.* ppt = Presentation("MyPicturePresentation"); open(ppt); slide1 = add(ppt,"Title and Picture"); replace(slide1,"Title","Street"); replace(slide1,"Picture",Picture("street1.jpg"));
关闭并查看演示文稿。
close(ppt);
从 MyPicturePresentation
创建演示文稿 MyNewPicturePresentation
。MyPicturePresentation
是 MyNewPicturePresentation
的模板演示文稿,
ppt = Presentation("MyNewPicturePresentation","MyPicturePresentation"); open(ppt);
使用幻灯片对象的 find
方法找到模板图片。由于图片来自模板演示文稿幻灯片,find
将图片作为 mlreportgen.ppt.TemplatePicture
对象返回。
slide1 = ppt.Children(1);
templatePictureObj = find(slide1,"Picture")
templatePictureObj = TemplatePicture with properties: XMLMarkup: '<p:pic><p:nvPicPr><p:cNvPr id="8" name="Picture"/><p:cNvPicPr><a:picLocks noChangeAspect="1" noGrp="1"/></p:cNvPicPr><p:nvPr><p:ph idx="13" sz="quarter" type="pic"/></p:nvPr></p:nvPicPr><p:blipFill><a:blip r:embed="rId2"><a:extLst><a:ext uri="{28A0092B-C50C-407E-A947-70E740481C1C}"><a14:useLocalDpi val="0" xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main"/></a:ext></a:extLst></a:blip><a:stretch><a:fillRect/></a:stretch></p:blipFill><p:spPr/></p:pic>' Name: 'Picture' X: [] Y: [] Width: [] Height: [] Style: [] Children: [] Parent: [1×1 mlreportgen.ppt.Slide] Tag: 'ppt.TemplatePicture:70:263' Id: '70:263'
用不同的图片替换该图片。
street2 = Picture("street2.jpg");
replace(templatePictureObj,street2);
关闭并查看演示文稿。
close(ppt); rptview(ppt);