如何解决您可以递归获取OpenXMLElement的父级部分吗?
我有一个OpenXML应用程序,我正在尝试扩展其功能。需要明确的是,我知道了ClosedXML,但是这个应用程序距离太远,无法突然切换。此处的目的是仅使用 OpenXML 扩展功能。
在一些新的帮助器函数中,我添加了一个名为“ GetParentPart”的函数。看起来如下:
public static object GetParentPart(OpenXmlElement element,Type typetoFind)
{
OpenXmlElement parent = null;
Type type = typetoFind.GetType();
if (typetoFind == typeof(Worksheet))
{
if (element.Parent.GetType() == typeof(Worksheet)) { parent = element.Parent; }
else { parent = (OpenXmlElement)GetParentPart(element.Parent,typetoFind); }
}
else if (typetoFind == typeof(Stylesheet))
{
if (element.Parent.GetType() == typeof(Stylesheet)) { parent = element.Parent; }
else { parent = (OpenXmlElement)GetParentPart(element.Parent,typetoFind); }
}
return parent;
}
如果我需要新的父部件,只需在if..then
中添加一个附加子句我不明白的是结果。例如,由于层次结构的原因,使用应用程序中现有集合中填充的Fill对象会返回 a StyleSheet:填充>填充>样式表。
但是,似乎与应用于工作簿的样式表不同,因此以下代码返回false。
public IsParentEqual(SpreadsheetDocument doc)
{
Fill myFill = MyFills[0].Fill;
Stylesheet stylesheetA = (Stylesheet)GetParentPart(Myfill,typeof(Stylesheet));
Stylesheet stylesheetB = doc.WorkbookPart.WorkbookStylesPart.Stylesheet;
return stylesheetA.Equals(stylesheetB);
}
MyFills是一个结构,其中包含当前文档中的所有fill元素,以及应用程序中使用的一些其他属性。
我想念什么吗?每个文档只有一个样式表时,我如何收到两个不同的样式表?
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。