Что такое абзац (Microsoft.Office.Interop.Word.Paragraph) - PullRequest
0 голосов
/ 13 февраля 2020

Что такое абзац в контексте Microsoft.Office.Interop.Word? Я считаю, что это больше, чем само приложение Office Word считает абзацем, потому что количество абзацев в приложении меньше, чем количество абзацев, возвращаемых коллекцией Microsoft.Office.Interop.Word.Paragraphs. Мы будем благодарны за любую ссылку, объясняющую это.

ОБНОВЛЕНИЕ!

Например, счетчик абзацев Microsoft Word App (возвращается при нажатии на информацию о количестве слов в строке состояния. ) показывает 40 абзацев в документе, как показано на рисунке ниже (с красной стрелкой, указывающей на счет).

Paragraph count gotten inside microsoft Word application

Количество абзацев, полученное с использованием программного кода c# в Word VSTO Add in, с другой стороны, возвращает 52 абзаца. Тогда каждое пустое место (новая строка без текста), добавленное к документу (нажатием кнопки ВВОД на клавиатуре), учитывается как увеличение количества возвращаемых здесь абзацев, но в приложении Word остается постоянным на уровне 40 абзацев. , На рисунке ниже показано количество абзацев в выводе Visual Studio System.Diagnostics.Debug.WriteLine.

Paragraphs count shown with the yellow arrow and how it increases with every empty space added

Код, используемый для получения количества абзацев:

Word.Document myDoc = Globals.ThisAddIn.Application.ActiveDocument;
        Word.Paragraphs paragraphs = myDoc.Paragraphs;
        int numberOfParagraphs = paragraphs.Count;
        System.Diagnostics.Debug.WriteLine("This is the number of paragraphs returned: " + numberOfParagraphs);

Исходя из этого, мне необходимо полное понимание того, какие элементы из документа Microsoft.Office.Interop.Word.Paragraphs коллекция на самом деле представляет; особенно те, которые обычно не считаются абзацами приложением Microsoft Word.

1 Ответ

0 голосов
/ 14 февраля 2020

После небольшого тестирования я думаю, что получил ответ.

Это такой же ответ, как и обоснованное предположение, поэтому не стесняйтесь исправлять все, что spot.

Таким образом, вы можете фактически показать в слове разрывы строк, которые определяют, что такое абзац.

Enters shown in Word

Теперь, как вы можете видеть на картинке, у меня 8 разрывов строк, но в нем показано только 1 абзац в слове.

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

Вы можете проверить эту гипотезу, показав символ перевода строки в слове и посчитав их вручную. Или, в своем коде, вы можете l oop просматривать абзацы и считать каждый абзац без текста. Если сумма этого количества плюс количество абзацев, которые показывает Word, совпадает с количеством абзацев в вашем коде, то моя гипотеза верна.

Если нет, то я очень ошибаюсь

...