Что такое абзац (Microsoft.Office.Interop.Word.Paragraph)

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

ОБНОВЛЕНИЕ!

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

Количество абзацев получено в приложении Microsoft Word

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

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

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

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.Paragraphscollection; особенно те, которые обычно не считаются абзацами приложением Microsoft Word.


person nomacreates    schedule 13.02.2020    source источник
comment
Вы это проверяли? Когда вы создаете документ с двумя абзацами, сколько их в коллекции Paragraphs? Когда вы их перечисляете, в чем разница?   -  person Rufus L    schedule 13.02.2020
comment
Просто из любопытства, как узнать количество абзацев Word и как узнать количество абзацев Interop?   -  person ikerbera    schedule 13.02.2020
comment
Абзац в приложении Word - это видимый текст. Поля, встроенные фигуры и т. Д. Включены во внутренний объект абзаца.   -  person Boeryepes    schedule 13.02.2020
comment
@RufusL, тестировал. У меня в приложении 40 абзацев, но 52 в коллекции. Есть вещи, которые не считаются абзацами при подсчете количества абзацев Word App, но фактически рассматриваются как абзацы в коллекции абзацев. Каждое нажатие ENTER на клавиатуре, например, засчитывается как дополнительный абзац Microsoft.Office.Interop.Word.Paragraphs даже без добавления текста, но вам нужно добавить текст, чтобы приложение Word считало его абзацем. Вот почему мне нужно хорошее понимание всех различий.   -  person nomacreates    schedule 13.02.2020
comment
@ikerbera, я обновил вопрос, добавив некоторые подробности о том, как я получаю два счета, пожалуйста, проверьте.   -  person nomacreates    schedule 13.02.2020
comment
@Boeryepes, хорошо. Думаю, я начинаю понимать. Вот почему мне нужна ссылка, которая подробно объясняет различия. Спасибо всем за вклад.   -  person nomacreates    schedule 13.02.2020


Ответы (1)


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

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

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

Ввод отображается в Word

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

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

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

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

person ikerbera    schedule 14.02.2020
comment
Как объяснялось в моем вопросе и комментариях выше, да, код распознает каждый знак абзаца как абзац независимо от того, есть ли в нем текст или он пуст. Но это не все! Дальнейшая проверка показывает, что разрыв строки со встроенной формой, но без текста, по-прежнему не воспринимается Word как абзац. Если таблица пустых ячеек добавляется к новому разрыву строки, Word все равно не распознает ее как абзац, но код считает каждое добавленное необработанное изображение как абзац, а каждую пустую ячейку - как абзац. Word считает только ячейки, содержащие текст, как абзацы. Тем временем еще на нем. Спасибо за вклад, пожалуйста! - person nomacreates; 15.02.2020