为什么在Word中打开文档后更改了书签ID?

时间:2013-09-17 17:13:46

标签: c# ms-word openxml-sdk

我正在使用开放XML SDK向Word文档添加书签,我还以编程方式设置书签ID和名称,在Word中打开文档后,我将文档重新打开为WordprocessingDocument,我发现书签ID被更改为0,1,2 ...之类的值,我想知道为什么Word正在修改书签ID,我仍然可以使用该名称来查找书签而不是id,因为我对id和name使用相同的值但这种行为对我来说很奇怪。

以下是我使用的代码:

BookmarkStart bookmarkStart1 = CreateBookmarkStart(entity.Id.ToString(), entity.Id);
        BookmarkEnd bookmarkEnd1 = CreateBookmarkEnd(entity.Id);
        Paragraph paragraph1 = CreateParagraph();
        body.Append(bookmarkStart1);
        body.Append(paragraph1);
        body.Append(bookmarkEnd1);


private static BookmarkStart CreateBookmarkStart(String name, long id)
    {
        return new BookmarkStart
        {
            Name = name,
            Id = id.ToString()
        };
    }

private static BookmarkEnd CreateBookmarkEnd(long id)
    {
        return new BookmarkEnd() { Id = id.ToString() };
    }

使用的ID是如下值:245103,39045 ......

1 个答案:

答案 0 :(得分:1)

正如您所注意到的,您可以(而且应该)依赖书签名称,而不是ID。像REF字段之类的东西使用名称,而不是ID。

ID似乎只用于配对书签开始和结束点标记。