我需要使用 OpenXML 在 word 文档中添加注释。我需要向位置或单词(或多个单词)添加评论。通常在 word 文档中,openxml 将这些文本作为运行元素返回。但是我想添加评论的单词是带有不同的运行元素的。所以我无法在我真正想要的文档单词中添加评论。这意味着我无法添加特定CommentRangeStart
和CommentRangeEnd
对象。
我目前的实现如下。
foreach (var paragraph in document.MainDocumentPart.Document.Descendants<DocumentFormat.OpenXml.Wordprocessing.Paragraph>())
{
foreach (var run in paragraph.Elements<Run>())
{
var item = run.Elements<Text>().FirstOrDefault(b => b.Text.Trim() == "My words selection to add comment");
if (item != null)
{
run.InsertBefore(new CommentRangeStart() { Id = id }, item);
var cmtEnd = run.InsertAfter(new CommentRangeEnd() { Id = id }, item);
run.InsertAfter(new Run(new CommentReference() { Id = id }), cmtEnd);
}
}
}
更多详情..
<w:r><w:t>This </w:t></w:r>
<w:r><w:t>is </w:t></w:r>
<w:r><w:t>a first paragraph</w:t></w:r>
那么在这种情况下,我怎么能在文本“是第一段”中添加评论。
或者在某些情况下,openxml 文档包含运行元素,如下所示。
<w:r><w:t>This is a first paragraph</w:t></w:r>
因此,这两种情况都如何在我的特定单词选择中添加评论。我在这里添加了一个截图,这正是我想要的。