2016-07-14 5 views
0

Я пытаюсь удалить определенную строку из слова doc. Логика заключается в том, что если я найду конкретное слово в документе, мне нужно удалить ту конкретную строку, которая содержит это слово. До сих пор я только написал логику, чтобы найти слово. Однако, отслеживая номер строки, удаляющую строку, я не могу это сделать. Я много раз искал несколько веб-сайтов, однако я сейчас очень озадачен. Не могли бы вы помочь мне в этом?Удаление определенной строки в документе MS Word

ниже мой код: -

void searchText(string txt) 
     { 
      Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); 
      Microsoft.Office.Interop.Word.Document doc = app.Documents.Open("C:\\Users\\SS5014874\\Desktop\\testdoc1.docx"); 
      object missing = System.Reflection.Missing.Value; 
      doc.Content.Find.ClearFormatting(); 
      object keyword = txt.ToString(); 
      if (doc.Content.Find.Execute(ref keyword, ref missing, ref missing, ref missing, ref missing, ref missing, 
       ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing)) 
      { 
       //Need the logic to delete the line here 
      } 
      else 
      { 
       MessageBox.Show("Not found"); 
      } 
      doc.Close(ref missing, ref missing, ref missing); 
      app.Quit(ref missing, ref missing, ref missing);    
     } 

Пожалуйста, дайте мне знать, если вам нужна любая другая информация.

ПРИМЕЧАНИЕ. Ключевое слово поиска задается текстовым полем, и вышеуказанная функция вызывается с помощью кнопки.

+0

проверки, если это помогает http://www.codeproject.com/Questions/519686/deleteplusapluslineplusinpluswordplusfromplusVB-ne – Dandy

+0

@ Dandy- Спасибо за ответ, однако, это решение для VB, а не для C# – Sourav

+0

http://converter.telerik.com/ сделает это за вас – Dandy

ответ

2

Что-то вроде

var range = doc.Content; 
if (range.Find.Execute(txt)) 
{ 
    range.Expand(WdUnits.wdLine); // or change to .wdSentence or .wdParagraph 
    range.Delete(); 
} 
+0

Это сработало. единственное изменение было вместо .wdLine, я использовал .wdParagraph. Большое спасибо. – Sourav

1

Вы можете перебирать абзацы документов, после того как вы найдете слово в конкретном абзаце, вы можете удалить абзац.

newDocument = wordApplication.Documents.Open(fileDoc, 
                confirmConversions: false, 
                addToRecentFiles: false, 
                readOnly: true, 
                passwordDocument: Password) 

var docRange = newDocument .Content; 

foreach(var para in docRange.Paragraphs) 
{ 
    if(para.ToString().Contains("word")) 
    { 
    docRange.Delete(para); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^