2016-07-27 95 views
0

我需要通過OpenXML將某些內容添加到Word文檔中。我使用了Open Xml生產力工具來生成代碼,我試圖調整它,以便它可以重用於所有文檔。生成OpenXML DocProperties Id

顯然需要一個DocProperties對象,它需要一個唯一的Id。有沒有辦法自動生成這些ID?或者,我是否需要執行類似下面的代碼來查找使用的最大ID並從那裏增加?

有沒有更好的方法?這看起來很昂貴。我使用.NET中的C#從Microsoft的Open XML SDK(v2.5)中使用DocumentFormat.OpenXml。

static uint getMaxDocPropertyId(WordprocessingDocument doc) 
    { 
     return doc 
      .MainDocumentPart 
      .Parts 
      .Select(x => x.OpenXmlPart.RootElement) 
      .Where(x => x != null) 
      .SelectMany(x => x.Descendants<Wp.DocProperties>()) 
      .Max(x => x.Id.Value as uint?) ?? 0; 
    } 

回答

0

這對我很有效,但它本質上是做同樣的事情。對我而言,我不認爲這是可以避免的,因爲我所尋找的DocProperties屬於圖像,並且我的文檔中有多個文檔,因此每個文檔都埋在段落的深處 - >運行 - >繪圖 - >和Inline的孩子。

private uint GetMaxDocPropertyId(WordprocessingDocument doc) 
{ 
    return doc 
     .MainDocumentPart 
     .RootElement 
     .Descendants<DocProperties>() 
     .Max(x => (uint?) x.Id) ?? 0; 
}