【发布时间】:2015-09-29 04:01:35
【问题描述】:
我正在编写一些代码来操作预先存在的 .DOTX 模板文件中的书签。对于这个问题,一些书签旨在指向另一个 .DOTX 文件并将其插入到当前文档中。
我很难找到一种方法来做到这一点,而无需一些繁重的操作和挖掘第二个模板中的每个元素并在当前文档中创建一个类似的元素。
任何人有任何方法可以轻松做到这一点?
【问题讨论】:
标签: c# openxml-sdk
我正在编写一些代码来操作预先存在的 .DOTX 模板文件中的书签。对于这个问题,一些书签旨在指向另一个 .DOTX 文件并将其插入到当前文档中。
我很难找到一种方法来做到这一点,而无需一些繁重的操作和挖掘第二个模板中的每个元素并在当前文档中创建一个类似的元素。
任何人有任何方法可以轻松做到这一点?
【问题讨论】:
标签: c# openxml-sdk
结果比我想象的要容易。
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());
}
}
}
我显然做的一切都是正确的,但是我在段落中插入了模板。模板是表格,不能嵌套在段落中。这实际上是破坏了我的文档。
【讨论】: