Вставка комментария в файл Docx * вокруг * текста внутри прогона - PullRequest
2 голосов
/ 24 декабря 2008

Как выполнить поиск определенного текста внутри текстового прогона (в Docx с использованием OpenXML SDK 2.0) и, как только вы найдете его, как вставить комментарий вокруг «текста поиска». «Текст поиска» может быть подстрокой существующего прогона. Все примеры в примерах вставляют комментарии вокруг первого абзаца или что-то в этом роде ... не то, что я ищу.

Спасибо

Ответы [ 2 ]

2 голосов
/ 15 февраля 2009

Вы должны разбить его на отдельные серии. Попробуйте использовать DocumentReflector - он даже генерирует код C # - чтобы посмотреть на документ, созданный с помощью word. Структура должна выглядеть примерно так (упрощенно):

<paragraph>
  <run>...</run>
  <commentRangeStart />
  <run>search text</run>
  <commentRangeEnd />
  <run>...</run>
</paragraph>
0 голосов
/ 17 декабря 2014

Для кого-то, кто еще может искать ответ:

Здесь - код для этого:

private void AddComment( Paragraph paragraph, string text )
        {
            string commentId = GetNextCommentId();
            Comment comment = new Comment() { Id= commentId, Date = DateTime.Now };
            Paragraph commentPara = new Paragraph( new Run( new Text( GetCommentsString( text ) ) ) { RunProperties = new RunProperties( new RunStyle() { Val = "CommentReference" } ) } );
            commentPara.ParagraphProperties = new ParagraphProperties( new ParagraphStyleId() { Val = "CommentText" } );
            comment.AppendChild( commentPara );
            _comments.AppendChild( comment );//Comments object
            _comments.Save();

            paragraph.InsertBefore( new CommentRangeStart() { Id = commentId }, paragraph.GetFirstChild<Run>() );
            var commentEnd = paragraph.InsertAfter( new CommentRangeEnd() { Id = commentId }, paragraph.Elements<Run>().Last() );
            paragraph.InsertAfter( new Run( new CommentReference() { Id = commentId } ), commentEnd );
        }
...