将模板插入模板 - C#Open XML SDK 2.0 / 2.5

时间:2015-09-28 16:38:38

标签: c# openxml-sdk

我正在研究一些代码来处理预先存在的.DOTX模板文件中的书签。对于此问题,某些书签旨在指向另一个.DOTX文件并将其插入当前文档。

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

任何人都有任何想法可以轻松地做到这一点吗?

1 个答案:

答案 0 :(得分: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());
                    }
                }
            }

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