2016-07-14 22 views
0

Ich habe versucht, eine bestimmte Zeile aus einem Word-Dokument zu löschen. Die Logik ist, wenn ich ein bestimmtes Wort im Dokument finde, muss ich diese bestimmte Zeile löschen, die das Wort enthält. Bisher habe ich nur die Logik geschrieben, um das Wort zu finden. Wenn ich jedoch die Zeilennummer nachzeichnen und die Zeile löschen kann, kann ich das nicht tun. Ich habe viele Websites durchsucht, bin aber jetzt sehr verwirrt. Könnten Sie mir bitte dabei helfen?Löschen einer bestimmten Zeile in einem MS Word-Dokument

unten ist mein Code: -

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);    
     } 

Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

HINWEIS: Das Such-Schlüsselwort wird durch ein Textfeld angegeben und die obige Funktion wird von einer Schaltfläche aufgerufen.

+0

zu überprüfen, ob das hilft http://www.codeproject.com/Questions/519686/deleteplusapluslineplusinpluswordplusfromplusVB-ne – Dandy

+0

@ Dandy Vielen Dank für die Antwort, aber diese Lösung ist für VB, nicht für C# – Sourav

+0

http://converter.telerik.com/ wird es für Sie tun – Dandy

Antwort

2

So etwas wie

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

Es hat funktioniert. Die einzige Änderung war statt .wdLine, ich verwendete .wdParagraph. Vielen Dank. – Sourav

1

Sie können die Absätze der Dokumente iterieren, und nachdem Sie das Wort in einem bestimmten Absatz gefunden haben, können Sie den Absatz löschen.

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); 
    } 
}