在 Word 加载项中获取当前字符索引
本文关键字:字符 索引 获取 Word 加载项 | 更新日期: 2023-09-27 18:33:20
>我在这里使用此控件http://www.codeproject.com/Articles/11819/Integrating-Microsoft-Word-in-your-NET-application
这个控件的好处是,它使用 Word 互操作,所以我可以使用带有应用程序、文档、选择、范围和书签对象的 Word 对象模型来操作 Word 文档。
我正在尝试在文档中搜索单词;所有单词都用双引号括起来。我为此使用正则表达式,只需在 Document.Application.ActiveDocument.Content.Text 中取出文本并使用这些取词,我的应用程序将在当前文档中查找不在相同字符大小写中的单词匹配项,例如在我的集合中我有"公司名称",应用程序将在文档中查找可能的匹配项,例如: 企业名称,企业名称,使用正则表达式的企业名称。我需要正则表达式,因为我需要获取单词的索引,因此当用户单击显示可能匹配项的列表时,它将使用
document.Application.Selection.SetRange(index, index);
document.Application.Selection.Find.ClearFormatting();
document.Application.Selection.Find.Execute(s_word, MatchCase: true);
这里的问题是,有时单词没有突出显示,因为 SetRange 位于错误的索引位置,因为我使用 RegEx 来获取 Match.Index
我的问题是,是否有其他方法来查找可能的匹配项,我也可以拥有索引,以便当用户在列表中单击此单词时,它将毫无问题地突出显示该单词?
不,据我所知没有。
Word 中的字符索引将在具有表格、图像和其他一些特殊对象时断开。对于我们的一个项目,我们遇到了同样的问题。我们发现没有可靠的方法将纯文本中的字符位置与 Word 中的索引相匹配。
这就是我们恢复到OpenXML格式以可靠的方式获取文本的原因,但这需要大量额外的工作才能实现。
您可以尝试使用 Find
,当您有一个大致的位置时。只需从calculated position - 10
开始搜索即可找到文本,然后很可能会找到确切的位置,您可以使用该位置突出显示。