Powerpoint OpenXML-为幻灯片演示文稿设置幻灯片布局

Powerpoint OpenXML-为幻灯片演示文稿设置幻灯片布局,powerpoint,openxml,openxml-sdk,presentation,presentationml,Powerpoint,Openxml,Openxml Sdk,Presentation,Presentationml,下面是我用来创建演示文稿的代码 我在这里尝试的是创建一张幻灯片,并在其中插入形状,然后将幻灯片附加到已创建的演示文稿中。那很好 我的问题是如何设置插入幻灯片的布局。这里我指的是幻灯片布局 slideLayoutpart.SlideLayout = new SlideLayout() { Type = SlideLayoutValues.VerticalTitleAndText }; 我想将此布局设置为幻灯片 我看起来像是在和slidelayout一起工作 Slide-Slide=new

下面是我用来创建演示文稿的代码

我在这里尝试的是创建一张幻灯片,并在其中插入形状,然后将幻灯片附加到已创建的演示文稿中。那很好

我的问题是如何设置插入幻灯片的布局。这里我指的是幻灯片布局

slideLayoutpart.SlideLayout = new SlideLayout() {
    Type = SlideLayoutValues.VerticalTitleAndText
};
我想将此布局设置为幻灯片

我看起来像是在和slidelayout一起工作

Slide-Slide=new-slidedata(new-ShapeTree());
uint drawingObjectId=1;
//构建幻灯片内容。
//指定新幻灯片的非可视属性。
NonVisualGroupShapeProperties nonVisualProperties=slide.CommonSlideData.ShapeTree.AppendChild(新的NonVisualGroupShapeProperties());
nonVisualProperties.NonVisualDrawingProperties=新的NonVisualDrawingProperties(){Id=1,Name=”“};
nonVisualProperties.NonVisualGroupShapeDrawingProperties=新的NonVisualGroupShapeDrawingProperties();
nonVisualProperties.ApplicationNonVisualDrawingProperties=新的ApplicationNonVisualDrawingProperties();
//指定新幻灯片的组形状属性。
slide.CommonSlideData.ShapeTree.AppendChild(新的GroupShapeProperties());
//声明并实例化新幻灯片的标题形状。标题形状
Shape titleShape=slide.CommonSlideData.ShapeTree.AppendChild(新形状());
drawingObjectId++;
//指定标题形状所需的形状属性。
非视觉形状属性非视觉形状属性2;
形状属性形状属性2;
创建可视属性(输出非可视形状属性2、输出形状属性2、,
占位符值。标题,drawingObjectId);
//指定标题形状的文本。
TextBody titletextBody=CreateContent(slideTitle,PlaceholderValues.Title);
标题形状附加(非可视形状属性2);
标题形状附加(形状属性2);
titleShape.Append(titletextBody);
//保存新的幻灯片部件。
slide.Save(slidePart);
#区域滑动泊松
//幻灯片ID列表不应为空。
slidedlist slidedlist=presentationPart.Presentation.slidedlist;
//在当前列表中查找最高的幻灯片ID。
uint maxSlideId=1;
SlideId prevlideid=null;
foreach(slidedlist.ChildElements中的SlideId SlideId)
{
如果(slideId.Id>maxSlideId)
{
maxSlideId=slideId.Id;
}
位置--;
如果(位置==0)
{
prevSlideId=slideId;
}
}
maxSlideId++;
//获取上一张幻灯片的ID。
SlidePart lastSlidePart;
如果(prevSlideId!=null)
{
//更改为将第一件事设置为布局
//lastSlidePart=(SlidePart)presentationPart.GetPartById(((SlideId)(SlideList.ChildElements[0])).RelationshipId);
lastSlidePart=(SlidePart)presentationPart.GetPartById(prevSlideId.RelationshipId);
}
其他的
{
lastSlidePart=(SlidePart)presentationPart.GetPartById(((SlideId)(SlideList.ChildElements[0])).RelationshipId);
}
//此处使用与上一张幻灯片相同的幻灯片布局。
if(null!=lastSlidePart.SlideLayoutPart)
{
SlideLayoutPart slideLayoutpartNew=lastSlidePart.SlideLayoutPart;
slideLayoutpartNew.AddNewPart();
slideLayoutpartNew.SlideLayout=new SlideLayout(){Type=SlideLayoutValues.VerticalTitleAndText};
slidePart.AddPart(slideLayoutpartNew);
slidePart.AddPart(slideLayoutPart);
//当我尝试设置lastslidelayout时,效果很好。
//slidePart.AddPart(lastSlidePart.SlideLayoutPart);
}
//在上一张幻灯片之后将新幻灯片插入幻灯片列表。
SlideId newSlideId=slidedlist.InsertAfter(新的SlideId(),prevSlideId);
newSlideId.Id=maxSlideId;
newSlideId.RelationshipId=presentationPart.GetIdOfPart(slidePart);
#端区
//保存修改后的演示文稿。
presentationPart.Presentation.Save();

我想出了如何设置布局

 string layoutName = "Title and Content";

        // Get SlideMasterPart and SlideLayoutPart from the existing Presentation Part
        SlideMasterPart slideMasterPart = presentationPart.SlideMasterParts.First();
        SlideLayoutPart slideLayoutPart = slideMasterPart.SlideLayoutParts.SingleOrDefault
            (sl => sl.SlideLayout.CommonSlideData.Name.Value.Equals(layoutName, StringComparison.OrdinalIgnoreCase));
        if (slideLayoutPart == null)
        {
            throw new Exception("The slide layout " + layoutName + " is not found");
        }

        slidePart.AddPart<SlideLayoutPart>(slideLayoutPart);
string layoutName=“Title and Content”;
//从现有演示文稿部分获取SlideMasterPart和SlideLayoutPart
SlideMasterPart SlideMasterPart=presentationPart.SlideMasterParts.First();
SlideLayoutPart SlideLayoutPart=slideMasterPart.SlideLayoutParts.SingleOrDefault
(sl=>sl.SlideLayout.CommonSlideData.Name.Value.Equals(layoutName、StringComparison.OrdinalIgnoreCase));
if(slideLayoutPart==null)
{
抛出新异常(“未找到幻灯片布局“+layoutName+”);
}
slidePart.AddPart(slideLayoutPart);

我在这里将布局附加到slidepart,并将保存演示文稿我想出了如何设置布局

 string layoutName = "Title and Content";

        // Get SlideMasterPart and SlideLayoutPart from the existing Presentation Part
        SlideMasterPart slideMasterPart = presentationPart.SlideMasterParts.First();
        SlideLayoutPart slideLayoutPart = slideMasterPart.SlideLayoutParts.SingleOrDefault
            (sl => sl.SlideLayout.CommonSlideData.Name.Value.Equals(layoutName, StringComparison.OrdinalIgnoreCase));
        if (slideLayoutPart == null)
        {
            throw new Exception("The slide layout " + layoutName + " is not found");
        }

        slidePart.AddPart<SlideLayoutPart>(slideLayoutPart);
string layoutName=“Title and Content”;
//从现有演示文稿部分获取SlideMasterPart和SlideLayoutPart
SlideMasterPart SlideMasterPart=presentationPart.SlideMasterParts.First();
SlideLayoutPart SlideLayoutPart=slideMasterPart.SlideLayoutParts.SingleOrDefault
(sl=>sl.SlideLayout.CommonSlideData.Name.Value.Equals(layoutName、StringComparison.OrdinalIgnoreCase));
if(slideLayoutPart==null)
{
抛出新异常(“未找到幻灯片布局“+layoutName+”);
}
slidePart.AddPart(slideLayoutPart);
我在这里将布局附加到slidepart,并将保存演示文稿