0

如何使用 获取 Word 文档中特定单词的出现次数Microsoft.Office.Interop.Word

例如,在我的 Word 文档中,我##<Test Sub Clause1>##在不同的地方有两个标签。我需要它在特定文档中出现的总数。在我的示例中,它将是 2。

是否存在任何预定义的函数Microsoft.Office.Interop.Word来获取此计数?或者最简单的方法是什么?

4

2 回答 2

5

这是您可以尝试的一些方法,它是根据我在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();
    }
}

MSDN上还有一些您可能想要查看的文档。

于 2013-06-04T12:54:04.853 回答
1

如果要统计单词##<Test Sub Clause1>##的出现次数。那你应该试试这个...

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

并尝试此代码。

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++;
}
于 2017-03-28T04:55:52.363 回答