如何搜索文本運行中的特定文本(在使用OpenXML SDK 2.0的Docx中),並且一旦找到它,如何插入註釋周圍'搜索文本'。 '搜索文本'可以是現有運行的子字符串。樣本中的所有示例都會在第一段中插入註釋,或者像這樣簡單的...不是我要找的內容。在Docx文件中插入註釋*圍繞*文本內的文本
謝謝
如何搜索文本運行中的特定文本(在使用OpenXML SDK 2.0的Docx中),並且一旦找到它,如何插入註釋周圍'搜索文本'。 '搜索文本'可以是現有運行的子字符串。樣本中的所有示例都會在第一段中插入註釋,或者像這樣簡單的...不是我要找的內容。在Docx文件中插入註釋*圍繞*文本內的文本
謝謝
你必須把它分解成單獨的運行。嘗試使用DocumentReflector - 它甚至會生成C#代碼 - 查看用word創建的文檔。結構應該是這個樣子(簡化):
<paragraph>
<run>...</run>
<commentRangeStart />
<run>search text</run>
<commentRangeEnd />
<run>...</run>
</paragraph>
對於別人誰可能仍然在尋找答案:
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);
}