2017-09-27 105 views
-1

我試圖做一個查找和Word文檔中更換,但因爲查找的文本超過255個字符,所以它會使用下面的方法運行到錯誤:C#Word文檔,替換選定的範圍文本?

app.Selection.Find.Execute(ref findText, ref matchCase, ref matchWholeWord, 
       ref matchWildCards, ref matchSoundsLike, ref matchAllWordForms, ref forward, ref wrap, ref format, ref replaceWithText, ref replace, 
       ref matchKashida, ref matchDiacritics, ref matchAlefHamza, ref matchControl); 

我發現有人有解決方案,它可以設法返回包含Word文檔中長文本的範圍,所以我試圖替換此範圍的文本並保存更改。但我無法弄清楚如何做嘗試更換喜歡的東西后: 獲取包含長文本

Microsoft.Office.Interop.Word.Range selectedRange = findTextRange(app, findText); 

嘗試更換回來的的selectedRange與價值選擇的範圍:

app.Selection.Range.Text = replaceWithText; 

它沒有任何問題需要執行,但保存的文檔沒有改變。所以我不確定我錯過了什麼? 謝謝。

回答

0

也許findTextRange不會爲您選擇範圍?

Microsoft.Office.Interop.Word.Range selectedRange = findTextRange(app, findText); 
app.Selection.Range.Text = replaceWithText; 

替換2號線:

selectedRange.Text = replaceWithText; // and, you might want to rename `selectedRange` 
0

可以使用的Aspose文件甲酸API此problem.This要做的應該是容易的,而不是另一種解決辦法我think.Add這個參考到你的視覺工作室的nuget。

string dataDir = RunExamples.GetDataDir_FindAndReplace(); 
string fileName = "TestFile.doc"; 

Document doc = new Document(dataDir + fileName); 

FindReplaceOptions options = new FindReplaceOptions(); 
options.ReplacingCallback = new ReplaceEvaluatorFindAndHighlight(); 
options.Direction = FindReplaceDirection.Backward; 

//我們希望突出顯示「您的文檔」短語。

Regex regex = new Regex("your document", RegexOptions.IgnoreCase); 
doc.Range.Replace(regex, "", options); 

dataDir = dataDir + RunExamples.GetOutputFilePath(fileName); 

//保存輸出文檔。

doc.Save(dataDir); 

請按照下面的鏈接: https://docs.aspose.com/display/wordsnet/Find+and+Replace

相關問題