问题描述
我有一个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 (将#修改为@)