我需要查找所有出現的特定單詞並使其斜體。 我可以很容易地找到每個單詞的第一次出現,但是使用while循環我不能,它會創建一個inifite循環,就像設置開始範圍不會更新範圍一樣......也許我很愚蠢,但這裏是我的邏輯:如何在Office Interop中查找並將單詞更改爲斜體文字
獲得第一次出現, 做出斜體,
集開始至第一次出現後,下一個字符,
重複直到有沒有更多的事件...
appWord = new Microsoft.Office.Interop.Word.Application();
wordDocument = appWord.Documents.Open("pathToFile", Type.Missing, false);
Microsoft.Office.Interop.Word.Range rng = wordDocument.Range();
string[] latinTerms = new []{"inter alia","invicta" };
for (int i = 0; i < latinTerms.Length; i++)
{
while (rng.Text.IndexOf(latinTerms[i]) != -1)
{
int start = rng.Text.IndexOf(latinTerms[i]);
int end = start + latinTerms[i].Length;
Microsoft.Office.Interop.Word.Range tmpRange = wordDocument.Range(start, end);
tmpRange.Select();
Microsoft.Office.Interop.Word.Selection currSel = appWord.Selection;
currSel.ItalicRun();
rng.Start = end + 1;
}
}
我使用Find.Execute替換字符和字符串,但效果很好,但我還沒有找到方法將字符和字符串更改爲斜體...
您是否需要使用Office Interop?另一種方法是將文件保存爲.rtf文件,然後使用C#程序讀取該文件,並使用簡單的字符串處理在RTF數據上查找並替換。然後將結果保存爲.rtf並將其讀回到Word中。 – RenniePet 2015-03-02 10:55:56
這是一個更大的文件解析應用程序的「微不足道」的一部分,所以這可能是最後的手段,幸運的是我找到了解決方案,謝謝你的時間和輸入,欣賞它! +1 – EaziLuizi 2015-03-02 14:48:12