Open XML SDK:如何从 TypedOpenXmlCompositeElement 检索父 OpenXmlPart?

问题描述 投票:0回答:1

是否可以检索

DocumentFormat.OpenXml.Packaging.OpenXmlPart
的父
DocumentFormat.OpenXml.Presentation.TypedOpenXmlCompositeElement
实例?

例如,在下面的代码中,我想获取

SlidePart
OpenXmlPart
的派生类)的
Shape
TypedOpenXmlCompositeElement
的派生类)实例:

using P = DocumentFormat.OpenXml.Presentation;

public static void GetSlidePart()
{
    var presDoc = PresentationDocument.Open("test.pptx", false);
    P.Shape pShape = presDoc.PresentationPart!.SlideParts.First().Slide.CommonSlideData!.ShapeTree!.Elements<P.Shape>().First();
    //...
    
    SlidePart parentSlidePartOfPShape = // pShape...
}
c# .net powerpoint openxml openxml-sdk
1个回答
0
投票

@adam-shakhabov 我对 OpenXmlPartRootElement 类进行了更改,允许访问 OpenXmlPart 属性。通过此更改,以下代码应该可以满足您想要执行的操作:

OpenXmlPartRootElement partRoot = pShape.Ancestors<OpenXmlPartRootElement>().First();

if (partRoot.OpenXmlPart is null)
{
    Console.WriteLine("partRoot is null");
    return;
}

OpenXmlPart part = partRoot.OpenXmlPart;

我在 github 上的 PR 中提到过你,它已经合并到 main 中,并将在 v3.0 中。如果您对此有任何疑问或后续行动,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.