2008-12-23 42 views
2

如何搜索文本運行中的特定文本(在使用OpenXML SDK 2.0的Docx中),並且一旦找到它,如何插入註釋周圍'搜索文本'。 '搜索文本'可以是現有運行的子字符串。樣本中的所有示例都會在第一段中插入註釋,或者像這樣簡單的...不是我要找的內容。在Docx文件中插入註釋*圍繞*文本內的文本

謝謝

回答

2

你必須把它分解成單獨的運行。嘗試使用DocumentReflector - 它甚至會生成C#代碼 - 查看用word創建的文檔。結構應該是這個樣子(簡化):

<paragraph> 
    <run>...</run> 
    <commentRangeStart /> 
    <run>search text</run> 
    <commentRangeEnd /> 
    <run>...</run> 
</paragraph> 
0

對於別人誰可能仍然在尋找答案:

Here是該代碼:

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); 
     }