如何修改Excel 2010/2013中的自定义XML部件

我想弄清楚如何修改以前保存在Excel中的自定义XML部分。 到目前为止,我发现的所有Web资源都解释了如何在Excel中添加自定义XML部件。 这我已经知道了。 但是我想修改现有的部分。

API似乎只有Add方法。 如果再次调用Add方法,则会添加其他XML部件。

我使用下面的代码来保存我的自定义XML

XNamespace NS = "http://schema.blabla.com"; var xDoc = new XDocument( new XDeclaration("1.0", "utf-8", "no"), new XComment("Custom XML Parts demo"), new XElement(NS + "demo", new XElement(NS + "config", new XElement(NS + "property", new XAttribute("value", "myVlaue", new XAttribute("key", "myKey")))))); Office.CustomXMLPart customXMLPart = workbook.CustomXMLParts.Add(xDoc.ToString(), System.Type.Missing); 

我使用下面的代码来检索我的自定义XML

 var retrievedXMLParts = workbook.CustomXMLParts.SelectByNamespace(NS.NamespaceName); //FirstOrDefault always returns first saved data, LastOrDefault needs to be called to get the latest //var customXMLPart = retrievedXMLParts.Cast<CustomXMLPart>().FirstOrDefault(); var customXMLPart = retrievedXMLParts.Cast<CustomXMLPart>().LastOrDefault(); var propertiesXML = customXMLPart != null ? customXMLPart.XML : String.Empty; 

我想实现的是检查是否存在自定义XML更新其内容,而不是添加它作为重复

我想我已经find了一个解决scheme,但它涉及遍历所有的自定义XML部分,删除一个你想更新,然后再次添加:

 IEnumerator e = workbook.CustomXMLParts.GetEnumerator(); CustomXMLPart p; while (e.MoveNext()) { p = (CustomXMLPart) e.Current; //p.BuiltIn will be true for internal buildin excel parts if (p != null && !p.BuiltIn && p.NamespaceURI == NS.NamespaceName) p.Delete(); }