是否可以检索
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...
}
@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 中。如果您对此有任何疑问或后续行动,请告诉我。