2013-06-04 3 views
0

Comment puis-je obtenir le nombre d'occurrences d'un mot particulier dans un document Word en utilisant Microsoft.Office.Interop.Word? Par exemple, dans mon document Word, j'ai deux étiquettes ##<Test Sub Clause1>## dans des endroits différents. Par exemple, dans mon document Word, j'ai ##<Test Sub Clause1>## étiquettes. J'ai besoin d'un compte total de son occurrence dans un document particulier. Dans mon exemple, ce sera 2.Nombre de mots avec Microsoft.Office.Interop.Word

Y a-t-il une fonction prédéfinie qui existe dans Microsoft.Office.Interop.Word pour obtenir ce nombre? Ou quelle est la manière la plus facile d'accomplir ceci?

Répondre

5

Voici quelque chose que vous pouvez essayer, modifié à partir d'un extrait de code que j'ai trouvé au dotnetperls.

using System; 
using Microsoft.Office.Interop.Word; 

class Program 
{ 
    static void Main() 
    { 
     var wordToFind = "some_word_to_find"; 
     var wordCounter = 0; 

     // Open a doc file. 
     var application = new Application(); 
     var document = application.Documents.Open("C:\\word.doc"); 

     // Loop through all words in the document. 
     for (var i = 1; i <= document.Words.Count; i++) 
      if (document.Words[i].Text.TrimEnd() == wordToFind) 
       wordCounter++; 

     Console.WriteLine("Matches Found: {0}", wordCounter); 

     // Close word. 
     application.Quit(); 
    } 
} 

Il y a aussi quelques documentation on MSDN que vous voudrez peut-être vérifier.

+0

Merci Winney pour votre réponse. J'ai la solution. –

1

Si vous souhaitez compter l'occurrence du mot ## < Test Sub Clause1> ##. Alors vous devriez essayer ceci ...

//AddLibrary 
using Word = Microsoft.Office.Interop.Word; 

Et essayez ce code.

object oMissing = System.Type.Missing; 
object outputFile = "C:\\WordCountTest.doc"; 
Word.Application wordApp = new Word.Application(); 
Microsoft.Office.Interop.Word.Document doc = wordApp.Documents.Open(ref outputFile, ref oMissing, 
      ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
      ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
      ref oMissing, ref oMissing, ref oMissing, ref oMissing); 
     doc.Activate(); 
int wordCount = 0; 
for (int k = 1; k <= doc.Words.Count; k++) 
{ 
    if (doc.Words[k].Text.TrimEnd() == "Test" && doc.Words[k + 1].Text.TrimEnd() == "Sub" && doc.Words[k + 2].Text.TrimEnd() == "Clause1") 
     wordCount++; 
}