2014-12-07 41 views
0

我在這裏使用這個控制 http://www.codeproject.com/Articles/11819/Integrating-Microsoft-Word-in-your-NET-application獲取在Word當前字符指數外接

和有關此控件的好處是,它使用Word互操作的,所以我可以操縱使用Word Object Model與應用Word文檔,文檔,「選擇」,「範圍」和「書籤」對象。

我試圖在文檔中搜索單詞;所有用雙引號括起來的單詞。我正在使用正則表達式,通過將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位於錯誤的索引位置,因爲我使用正則表達式來獲取Match.Index

我的問題是,是否有任何其他方式尋找可能的匹配,我也可以有索引,所以當用戶點擊列表中的這個單詞,它會突出顯示該單詞而沒有任何問題?

回答

0

不,我不知道。

當有表格,圖像和其他特殊對象時,Word中的字符索引將會熄滅。對於one of our projects,我們遇到了同樣的問題。我們沒有找到可靠的方法將純文本中的字符位置與Word中的索引進行匹配。

這就是我們恢復到OpenXML格式以可靠方式獲取文本的原因,但這需要大量額外工作才能實現。

當您擁有大致的位置時,您可以嘗試使用Find。只需搜索從calculated position - 10開始尋找文字,最有可能的你會發現確切的位置,然後,你可以用來突出顯示。

+0

@Jayson:需要更多幫助? – 2014-12-08 09:09:56