【问题标题】:Get current character index in Word Add-in获取 Word 加载项中的当前字符索引
【发布时间】:2014-12-07 09:22:45
【问题描述】:

我在这里使用这个控件 http://www.codeproject.com/Articles/11819/Integrating-Microsoft-Word-in-your-NET-application

这个控件的好处是,它使用 Word 互操作,因此我可以使用 Word Object Model 与 Application、Document、Selection、Range 和 Bookmark 对象来操作 Word 文档。

我正在尝试在文档中搜索单词;所有用双引号括起来的单词。我为此使用 RegEx,只是通过在 Document.Application.ActiveDocument.Content.Text 中取出文本并使用这些提取的单词,我的应用程序将在当前文档中查找不匹配的单词在相同的字符大小写中,例如在我的集合中,我有“企业名称”,应用程序将在文档中查找可能的匹配项,例如:企业名称、企业名称、使用 RegEx 的企业名称。我需要正则表达式,因为我需要获取单词的索引,因此当用户单击显示可能匹配项的列表时,它将使用

自动在文档中突出显示
document.Application.Selection.SetRange(index, index);
document.Application.Selection.Find.ClearFormatting();
document.Application.Selection.Find.Execute(s_word, MatchCase: true);

这里的问题是,有时单词没有突出显示,因为 SetRange 位于错误的索引位置,因为我使用 RegEx 获取 Match.Index

我的问题是,是否有任何替代方法来寻找可能的匹配项,我也可以拥有索引,因此当用户在列表中单击该单词时,它会毫无问题地突出显示该单词?

【问题讨论】:

    标签: c# .net vsto


    【解决方案1】:

    没有,据我所知没有。

    当有表格、图像和一些其他特殊对象时,Word 中的字符索引会消失。对于one of our projects,我们遇到了同样的问题。我们发现没有可靠的方法将纯文本中的字符位置与 Word 中的索引进行匹配。

    这就是我们恢复为 OpenXML 格式以可靠方式输出文本的原因,但这需要大量额外工作才能实现。

    当您有大概的位置时,您可以尝试使用Find。只需从calculated position - 10 开始搜索即可找到文本,很可能您会找到准确的位置,然后您可以使用它来突出显示。

    【讨论】:

    • @Jayson:需要更多帮助吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    相关资源
    最近更新 更多