2015-09-28 72 views
1

我正在研究一些代码来处理已存在的.DOTX模板文件中的书签。对于此问题,某些书签旨在指向另一个.DOTX文件并将其插入当前文档。将模板插入到模板中 - C#Open XML SDK 2.0/2.5

我很难找到一种方法来做到这一点,没有一些重要的操作和挖掘第二个模板中的每个元素,并在当前文档中创建一个类似的元素。

任何人有任何想法的方式来做到这一点很容易?

回答

0

原来比我想象的容易。

foreach (BookmarkStart bookmark in mainDoc.RootElement.Descendants<BookmarkStart>().Where(b => String.Equals(b.Name, bookmarkName))) 
      { 
       var parent = bookmark.Parent; 

       using (WordprocessingDocument newTemplate = WordprocessingDocument.Open(template2, false)) 
       { 
        var newTemplateBody = newTemplate.MainDocumentPart.Document.Body; 
        foreach (var element in newTemplateBody.Elements().Reverse<OpenXmlElement>()) 
        { 
         parent.InsertAfterSelf<OpenXmlElement>((OpenXmlElement)element.Clone()); 
        } 
       } 
      } 

我显然是在做正确的事情,但我是在一段中插入模板。该模板是一个表格,不能嵌套在段落中。这实际上是打破了我的文件。