DocX - 如何获取段落或列表的索引?

DocX - how to get the index of a paragraph or list?

我正在开发一个应用程序,需要将用户输入的内容(包括来自富文本编辑器的内容)插入到 Word 文档中。为此,我使用 DocX 库 (http://docx.codeplex.com/)。该库提供了一种非常简洁的方式来完成某些任务,并且只要您只需要将内容插入空文档就可以很好地工作。

但是,我需要插入的文档是一个已经有一些内容的模板。我需要的是能够在文档中的此内容之后插入用户输入。像这样:

这里有一些默认内容。

[这是我想要的内容]

其他一些默认内容。

DocX 具有将段落和列表插入文档的方法:

using(var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(PathToTestFile))
{
    var doc = DocX.Load(stream); //will have two paragraphs
    var p = doc.InsertParagraph(); //adds a new, empty paragraph to the end of the document
    var list = doc.AddList(listType: ListItemType.Numbered); //adds a list
    doc.AddListItem(list, "Test1", listType: ListItemType.Numbered); //adds a listitem to the list
    doc.InsertList(list); //adds a list to the end of the document
}

一个段落也有一个方法可以插入特定的对象,比如表格或其他段落,在 og 之前或之后:

//given a Paragraph p and another Paragraph newP:
p.InsertParagraphAfterSelf(newP);

列表具有相同的方法,但都没有对其他列表执行相同操作的选项(即我不能对列表执行与上述示例相同的操作)。为此,我需要文档中段落或列表的索引。这将允许我使用接受索引作为参数的插入方法。

DocX class 有这个(从 DocX 源代码中提取:http://docx.codeplex.com/SourceControl/latest#DocX/DocX.cs):

// A lookup for the Paragraphs in this document.
    internal Dictionary<int, Paragraph> paragraphLookup = new Dictionary<int, Paragraph>();

这本词典是内部词典,这意味着我无法访问它。在我的一生中,我无法找到任何其他查找索引的方法,但它必须是一种方法,因为有些方法需要这个索引。有没有人遇到过同样的问题?一个解决方案将非常适用!

完成您所要求的最简单方法是在 Word 中编辑您的模板文档,然后在其中要添加内容的位置插入一个书签。然后您可以使用:

document.InsertAtBookmark("Content to be added", "bookmarkname");

插入内容。