Свойство возвращает неправильное количество слов в документе?
Microsoft.Office.Interop.Word. Свойство doc.Content.Words.Count возвращает неверное значение количество слов большее чем в строке состояния самого приложения Word.Даже если в файле только одно слово свойство возвращает значение 2. Чем больше строк тем больше разница Есть ли свойство или метод которым можно получить такое же количество слов что и в строке состояния Word?
Да, вы абсолютно правы:
doc.Content.Words.Count в Microsoft.Office.Interop.Wordне совпадает с числом слов в строке состояния Word. Это известное поведение, связанное с тем, что Content.Words считает всё, что Word считает "словом" — включая знаки препинания, пробелы и спецсимволы.
🧠 Почему Words.Count даёт "лишние слова":
doc.Content.Words.Count
включает знаки препинания (например, . или , — как отдельные "слова"),
считает переходы строк, символы табуляции, объекты,
и даже пустые абзацы.
➡️ Поэтому одно слово может давать 2 или 3 в .Words.Count.
✅ Как получить точное количество слов как в Word (строка состояния)
Используй свойство doc.ComputeStatistics с флагом WdStatistic.wdStatisticWords — это единственный способ, который даёт то же число, что и строка состояния Word:
int wordCount = doc.ComputeStatistics(Microsoft.Office.Interop.Word.WdStatistic.wdStatisticWords);
🔹 Этот метод возвращает то же значение, что Word показывает в нижнем левом углу.
❗ Важно:
Метод работает даже если документ ещё не сохранён.
Работает быстрее и точнее, чем Content.Words.Count.
Поддерживается с ранних версий Word (2003+).
Пример:
using Word = Microsoft.Office.Interop.Word;
var app = new Word.Application();
var doc = app.Documents.Open(@"C:\path\to\file.docx");
int accurateWordCount = doc.ComputeStatistics(Word.WdStatistic.wdStatisticWords);
Console.WriteLine($"Точное количество слов: {accurateWordCount}");
doc.Close(false);
app.Quit();
🧩 Итог:
❌ doc.Content.Words.Count — не используйте для точного подсчёта.
✅ Используйте doc.ComputeStatistics(WdStatistic.wdStatisticWords) — это тот самый счётчик, что в Word GUI.
Благодарим за вопрос. GLAVQA
Пустая строка