使用幻灯片版式

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

PresentationML 中的幻灯片版式

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

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

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

下表列出了使用幻灯片版式时使用的 元素的 <sldLayout/> 子元素以及与之对应的 Open XML SDK 类。

PresentationML 元素 Open XML SDK 类
<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 数据类型定义。

Open XML SDK SlideLayout 类

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

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

ColorMapOverride 类

ColorMapOverride 对应于 <clrMapOvr/> 元素。 ISO/IEC 29500 规范中的以下信息介绍了 元素<clrMapOvr/>

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

CommonSlideData 类

CommonSlideData 对应于 <cSld/> 元素。 ISO/IEC 29500 规范中的以下信息介绍了 元素<cSld/>

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

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

ExtensionListWithModification 类

ExtensionListWithModification 对应于 <extLst/>元素。 以下信息来自

ISO/IEC 29500

规范引入了 <extLst/> 元素:

此元素指定具有修改能力的扩展列表,在该列表中定义元素类型 <ext/> 的所有未来扩展。 扩展列表以及相应的未来扩展用于扩展 PresentationML 框架的存储功能。 这允许在框架中本机存储各种新类型的数据。

注意

使用此 extLst 元素,生成应用程序可以存储是否已修改此扩展属性。

HeaderFooter 类

HeaderFooter 对应于 <hf/> 元素。 ISO/IEC 29500 规范中的以下信息介绍了 元素<hf/>

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

Timing 类

Timing 对应于 <timing/> 元素。 ISO/IEC 29500 规范中的以下信息介绍了 元素<timing/>

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

Transition 类

Transition 对应于 <transition/> 元素。 ISO/IEC 29500 规范中的以下信息介绍了 元素<transition/>

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

使用 SlideLayout 类

如下面的 Open XML SDK 代码示例所示,类的每个实例 SlideLayout 都与 类的 SlideLayoutPart 一个实例相关联,该实例表示幻灯片版式部件,这是 PresentationML 演示文稿文件包的必需部分之一。 每个SlideLayout类实例还必须与 和 Slide 类的SlideMaster实例相关联,这些实例又与由 和 SlidePart 类表示SlideMasterPart的类似命名所需的表示部件相关联。

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

Open XML SDK 代码示例

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

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

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;
}

生成的 PresentationML

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

    <?xml version="1.0" encoding="utf-8"?>
    <p:sldLayout xmlns:p="http://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="http://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="http://schemas.openxmlformats.org/drawingml/2006/main" />
              </p:cNvSpPr>
              <p:nvPr>
                <p:ph />
              </p:nvPr>
            </p:nvSpPr>
            <p:spPr />
            <p:txBody>
              <a:bodyPr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
              <a:lstStyle xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
              <a:p xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
                <a:endParaRPr />
              </a:p>
            </p:txBody>
          </p:sp>
        </p:spTree>
      </p:cSld>
      <p:clrMapOvr>
        <a:masterClrMapping xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
      </p:clrMapOvr>
    </p:sldLayout>

另请参阅

关于 Open XML SDK for Office

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

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