Мне нужно использовать OpenXML для добавления комментариев в текстовый документ. Мне нужно добавить комментарий к месту или слову (или нескольким словам). Обычно в текстовом документе 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>
Итак, оба этих случая, как добавить комментарий к моему конкретному выбору слов. Я добавил скриншот здесь, что именно то, что я хочу.