私はいくつかのドキュメントを処理し、ビジネスルールに基づいてCustomXMLPartsを作成し、各パートのContentControlを作成するプログラムを持っています。 OpenXMLでCustomXMlPartを作成し、Guid
を属性として追加する関数です。このGuid
は、ContentControlにリンクするために使用されます。OpenXMLでCustomXMLPartのGuid Idを取得する方法
private static void InsertMetadata(WordprocessingDocument document, Dictionary<string, object> metaData, string customPartName, string id = null)
{
XElement metadataElement = null;
CustomXmlPart customXml = null;
if (id != null)
{
metadataElement = new XElement(customPartName, new XAttribute("Guid", "NeedsID"));
customXml = document.MainDocumentPart.AddCustomXmlPart(CustomXmlPartType.CustomXml);
var guidID = document.MainDocumentPart.GetIdOfPart(customXml);
}
else
{
metadataElement = new XElement(customPartName);
customXml = document.MainDocumentPart.AddCustomXmlPart(CustomXmlPartType.CustomXml);
}
foreach (KeyValuePair<string, object> entry in metaData)
{
metadataElement.Add(new XElement(entry.Key, entry.Value));
}
using (StreamWriter sr = new StreamWriter(customXml.GetStream()))
{
sr.Write(metadataElement);
}
}
CustomXMLPartは、プロパティIDを持っており、それがこのような部品を読み取り、customXML要素のID WordAddInで
foreach (CustomXMLPart part in userAction.Application.ActiveDocument.CustomXMLParts.OfType<CustomXMLPart>())
{
var section = part.SelectSingleNode("MySection");
if (section!=null)
{
part.SetAttributeValue("Guid", part.Id.ToString());
}
}
にGuid
属性を設定WordAddIn がありますGuid。 AddInはパーツを読み取り、そのパーツのIDであるGuidで属性を更新します。
問題はXMLパーツを作成することができ、ContentControlを作成してGuidのタグを追加してCCとXMLpartをリンクできるようにすることです。 CustomXMLPartを作成してからCCとiを追加して、リンクするGUIDを追加します。 OPENXMLを使用している場合しかし、 は、私が作成した後にGUIDなどのIDを取得し、DocumentPart
var guidID = document.MainDocumentPart.GetIdOfPart(customXml);
これは、GUIDを返しませんにこれを追加しましたカント。これは、このRd96388a5e95041a0
のようなものを返します。しかし、私はので、私はCCにタグとして追加することができますGUIDを必要とします。 あらかじめ定義されたGuidを持つCustomXMLPartを追加する方法を考え出すことができなかったので、その部分を作成してIDを取得しようとしました。