使用幻灯片版式

上次修改时间: 2010年10月8日

适用范围: Excel 2010 | Office 2010 | PowerPoint 2010 | Word 2010

本文内容
PresentationML 中的幻灯片版式
Open XML SDK 2.0 SlideLayout 类
使用 SlideLayout 类
Open XML SDK 代码示例
生成的 PresentationML

本主题讨论 Open XML SDK 2.0 SlideLayout 类以及它与 Open XML 文件格式 PresentationML 架构的关系。

PresentationML 中的幻灯片版式

ISO/IEC 29500(该链接可能指向英文页面) 规范介绍了 Open XML PresentationML <sldLayout> 元素,该元素用于表示 PresentationML 文档中的幻灯片版式,如下所示:

该元素指定幻灯片版式实例。幻灯片版式实质上包含可应用于任何现有幻灯片的模板幻灯片设计。应用于现有幻灯片时,所有相应内容都应该映射到新的幻灯片版式。

© ISO/IEC29500: 2008。

<sldLayout> 元素是 PresentationML 幻灯片版式部件的根元素。有关构成 PresentationML 文档的部件和元素的整体结构的详细信息,请参阅 PresentationML 文档的结构

下表列出了在处理幻灯片版式时使用的 <sldLayout> 元素的子元素以及与它们对应的 Open XML SDK 2.0 类。

PresentationML 元素

Open XML SDK 2.0 类

<clrMapOvr>

ColorMapOverride

<cSld>

CommonSlideData

<extLst>

ExtensionListWithModification

<hf>

HeaderFooter

<timing>

Timing

<transition>

Transition

ISO/IEC 29500(该链接可能指向英文页面) 规范中的下表介绍了 <sldLayout> 元素的属性。

属性

说明

matchingName(匹配名称)

指定用于代替 cSld 元素中的 name 属性的名称。这用于版式映射,以响应版式更改和模板应用。

此属性可能的值由 W3C XML 架构 string 数据类型定义。

preserve(保留幻灯片版式)

指定删除应用相应幻灯片版式的所有幻灯片时是否删除该版式。如果未指定此属性,则生成应用程序应假定值为 false。这意味着,如果演示文稿中没有幻灯片与该幻灯片相关联,则该幻灯片实际上会被删除。

此属性可能的值由 W3C XML 架构 boolean 数据类型定义。

showMasterPhAnim(显示母版占位符动画)

指定是否显示母版幻灯片中占位符的动画。

此属性可能的值由 W3C XML 架构 boolean 数据类型定义。

showMasterSp(显示母版形状)

指定是否在幻灯片上显示母版幻灯片上的形状。

此属性可能的值由 W3C XML 架构 boolean 数据类型定义。

type(幻灯片版式类型)

指定此幻灯片使用的幻灯片版式类型。

此属性可能的值由 ST_SlideLayoutType 简单类型 (§19.7.15) 定义。

userDrawn(用户绘制)

指定相应对象是否是由用户绘制的,因此不应删除。这允许标记包含用户绘制数据的幻灯片。

此属性可能的值由 W3C XML 架构 boolean 数据类型定义。

© ISO/IEC29500: 2008。

Open XML SDK 2.0 SlideLayout 类

OXML SDK SlideLayout 类表示在 PresentationML 文档的 Open XML 文件格式架构中定义的 <sldLayout> 元素。使用 SlideLayout 类可对 PresentationML 文档中的各个 <sldLayout> 元素进行操作。

下面的列表显示了表示 <sldLayout> 元素的子元素并因此通常与 SlideLayout 类关联的类。

ColorMapOverride 类

ColorMapOverride 类对应于 <clrMapOvr> 元素。ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下信息介绍了 <clrMapOvr> 元素:

此元素提供一种机制,使用此机制可以替代 <ClrMap> 元素中列出的配色方案。如果存在 <masterClrMapping> 子元素,则使用母版定义的配色方案。如果存在 <overrideClrMapping> 子元素,则它定义特定于父备注幻灯片、演示文稿幻灯片或幻灯片版式的新配色方案。

© ISO/IEC29500: 2008。

CommonSlideData 类

CommonSlideData 类对应于 <cSld> 元素。ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下信息介绍了 <cSld> 元素:

此元素指定与所有幻灯片类型相关的幻灯片信息类型的容器。所有幻灯片都共享一组独立于幻灯片类型的通用属性;任何特定幻灯片的这些属性的描述都存储在该幻灯片的 <cSld> 容器中。由父元素指明的特定于幻灯片类型的幻灯片数据存储在其他位置。

<cSld> 中的实际数据只描述特定的父幻灯片;这些数据只是存储的对所有幻灯片通用的信息类型。

© ISO/IEC29500: 2008。

ExtensionListWithModification 类

ExtensionListWithModification 类对应于 <extLst>元素。ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下信息介绍了 <extLst> 元素:

此元素指定具有修改功能的扩展名列表,其中定义了元素类型 <ext> 所有未来的扩展名。扩展名列表以及相应的未来扩展名用于扩展 PresentationML 框架的存储功能,从而允许各种新的数据类型以固有的方式存储在该框架内。

[注意:使用此 extLst 元素,生成应用程序可以存储有关此扩展属性是否已修改的相关信息。注释结束]

© ISO/IEC29500: 2008。

HeaderFooter 类

HeaderFooter 类对应于 <hf> 元素。ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下信息介绍了 <hf> 元素:

此元素指定幻灯片的页眉和页脚信息。页眉和页脚由文本占位符组成,它们在所有幻灯片和幻灯片类型中应该保持一致,例如日期和时间、幻灯片编号以及自定义页眉和页脚文本。

© ISO/IEC29500: 2008。

Timing 类

Timing 类对应于 <timing> 元素。ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下信息介绍了 <timing> 元素:

此元素指定用于处理对应幻灯片中的所有动画和定时事件的计时信息。此信息通过 <timing> 元素中的时间节点跟踪。有关这些时间节点及其定义方式的详细信息,请参阅 PresentationML 框架中的"动画"部分。

© ISO/IEC29500: 2008。

Transition 类

Transition 类对应于 <transition> 元素。ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下信息介绍了 <transition> 元素:

此元素指定应该用于从前一幻灯片切换到当前幻灯片的幻灯片切换类型。也就是说,切换信息存储在切换完成后显示的幻灯片中。

© ISO/IEC29500: 2008。

使用 SlideLayout 类

如随后的 Open XML SDK 代码示例所示,每个 SlideLayout 类实例都与一个 SlideLayoutPart 类实例相关联,后者表示幻灯片版式部件,它是 PresentationML 演示文稿文件包必需的部件之一。每个 SlideLayout 类实例还必须与 SlideMasterSlide 类实例相关联,后面两个类又与由 SlideMasterPartSlidePart 类表示的具有相似名称的必需演示文稿部件相关联。

因此,表示 <sldLayout> 元素的 SlideLayout 类还与表示 <sldLayout> 元素的子元素的一系列其他类相关联。这些类包括 CommonSlideData 类、ColorMapOverride 类、ShapeTree 类和 Shape 类,如下面的代码示例所示。

Open XML SDK 代码示例

来自如何:通过提供文件名创建演示文稿文档文章中的以下方法向现有演示文稿添加新幻灯片版式部件,并在新幻灯片版式部件中创建 Open XML SDK 2.0 SlideLayout 类的实例。SlideLayout 类构造函数创建 CommonSlideData 类和 ColorMapOverride 类的实例。CommonSlideData 类构造函数创建 ShapeTree 类的实例,后者的构造函数又创建其他类实例:NonVisualGroupShapeProperties 类实例、GroupShapeProperties 类实例和 Shape 类实例。

代码中由字母 P 表示的命名空间是 DocumentFormat.OpenXml.Presentation 命名空间。

private static SlideLayoutPart CreateSlideLayoutPart(SlidePart slidePart1)
        {
            SlideLayoutPart slideLayoutPart1 = slidePart1.AddNewPart<SlideLayoutPart>("rId1");
            SlideLayout slideLayout = new SlideLayout(
            new CommonSlideData(new ShapeTree(
              new P.NonVisualGroupShapeProperties(
              new P.NonVisualDrawingProperties() { Id = (UInt32Value)1U, Name = "" },
              new P.NonVisualGroupShapeDrawingProperties(),
              new ApplicationNonVisualDrawingProperties()),
              new GroupShapeProperties(new TransformGroup()),
              new P.Shape(
              new P.NonVisualShapeProperties(
                new P.NonVisualDrawingProperties() { Id = (UInt32Value)2U, Name = "" },
                new P.NonVisualShapeDrawingProperties(new ShapeLocks() { NoGrouping = true }),
                new ApplicationNonVisualDrawingProperties(new PlaceholderShape())),
              new P.ShapeProperties(),
              new P.TextBody(
                new BodyProperties(),
                new ListStyle(),
                new Paragraph(new EndParagraphRunProperties()))))),
            new ColorMapOverride(new MasterColorMapping()));
            slideLayoutPart1.SlideLayout = slideLayout;
            return slideLayoutPart1;
         }
Private Shared Function CreateSlideLayoutPart(ByVal slidePart1 As SlidePart) As SlideLayoutPart
            Dim slideLayoutPart1 As SlideLayoutPart = slidePart1.AddNewPart(Of SlideLayoutPart)("rId1")
            Dim slideLayout As New SlideLayout(New CommonSlideData(New ShapeTree(New P.NonVisualGroupShapeProperties(New P.NonVisualDrawingProperties() With { _
              .Id = CType(1UI, UInt32Value), _
              .Name = "" _
            }, New P.NonVisualGroupShapeDrawingProperties(), New ApplicationNonVisualDrawingProperties()), _
                New GroupShapeProperties(New TransformGroup()), New P.Shape(New P.NonVisualShapeProperties(New P.NonVisualDrawingProperties() With { _
              .Id = CType(2UI, UInt32Value), _
              .Name = "" _
            }, New P.NonVisualShapeDrawingProperties(New ShapeLocks() With { _
              .NoGrouping = True _
            }), New ApplicationNonVisualDrawingProperties(New PlaceholderShape())), New P.ShapeProperties(), New P.TextBody(New BodyProperties(), _
                New ListStyle(), New Paragraph(New EndParagraphRunProperties()))))), New ColorMapOverride(New MasterColorMapping()))
            slideLayoutPart1.SlideLayout = slideLayout
            Return slideLayoutPart1
        End Function

生成的 PresentationML

当 Open XML SDK 2.0 代码运行时,以下 XML 会写入代码中引用的 PresentationML 文档文件。

<?xml version="1.0" encoding="utf-8"?>
<p:sldLayout xmlns:p="https://schemas.openxmlformats.org/presentationml/2006/main">
  <p:cSld>
    <p:spTree>
      <p:nvGrpSpPr>
        <p:cNvPr id="1"
                 name="" />
        <p:cNvGrpSpPr />
        <p:nvPr />
      </p:nvGrpSpPr>
      <p:grpSpPr>
        <a:xfrm xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
      </p:grpSpPr>
      <p:sp>
        <p:nvSpPr>
          <p:cNvPr id="2"
                   name="" />
          <p:cNvSpPr>
            <a:spLocks noGrp="1"
                       xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
          </p:cNvSpPr>
          <p:nvPr>
            <p:ph />
          </p:nvPr>
        </p:nvSpPr>
        <p:spPr />
        <p:txBody>
          <a:bodyPr xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
          <a:lstStyle xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
          <a:p xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main">
            <a:endParaRPr />
          </a:p>
        </p:txBody>
      </p:sp>
    </p:spTree>
  </p:cSld>
  <p:clrMapOvr>
    <a:masterClrMapping xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
  </p:clrMapOvr>
</p:sldLayout>

请参阅

概念

关于 Open XML SDK 2.0 for Microsoft Office

如何:通过提供文件名创建演示文稿

如何:将主题应用于演示文稿