我需要通过OpenXML向word文档添加内容。我已经使用Open Xml生产力工具来生成代码,并且我试图对其进行调整,以便它可以重复使用所有文档。
显然需要一个DocProperties对象,这需要一个唯一的Id。有没有办法自动生成这些ID?或者我是否需要执行类似下面的代码来查找使用的最大ID并从那里开始增量?
有更好的方法吗?这看起来很贵。我在C#和.Net 4.0中使用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 :(得分:0)
这对我有用,但它基本上做同样的事情。对我来说,我不认为这是可以避免的,因为我正在寻找的DocProperties属于图像,而且我的文档中有多个,所以每个都埋在段落的深处 - &gt;运行 - &gt;绘图 - &gt;和一个Inline的孩子。
private uint GetMaxDocPropertyId(WordprocessingDocument doc)
{
return doc
.MainDocumentPart
.RootElement
.Descendants<DocProperties>()
.Max(x => (uint?) x.Id ) ?? 0;
}