Как написать метод Paragraph.Next (Object) для программного создания 2 «следующих абзацев» (C #) в документе MS Word после текста? - PullRequest
0 голосов
/ 01 ноября 2019

Я хочу иметь возможность разместить 2 абзаца после текста в документе MSWord, над которым я работаю. Все это написано в пользовательской настройке компилятора как надстройка в слове. К сожалению, я новичок в C # и больше не могу этого делать.

Сможет ли Microsoft.Office.Interop.Word.Paragraph.Next(ref object count); добавить даже 1 абзац, если он будет каким-либо образом добавлен после текста? Например,

Каким-то образом объявляется Paragraph2 как 2 x Microsoft.Office.Interop.Word.Paragraph.Next(ref object count); и будет использоваться следующим образом

string text = "Hello, World!";
BC.SetThisField(text + Paragraph2);

В результате (Pilcrows для представления, как это будет выглядеть при отображении символов абзаца):

Привет, мир! 101

Ссылка (ниже) на документацию Microsoft по этому вопросу просто привела меня на путь исследования ref, objectи их определение count, которое, по-видимому, равно 1. Мне не удалось использовать даже значение по умолчанию того, что должно быть.

https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.word.paragraph.next?view=word-pia#Microsoft_Office_Interop_Word_Paragraph_Next_System_Object__

Я думал, согласно аналогичнымвопросы, задаваемые по stackoverflow, о том, что вместо этого мне следует использовать метод Paragraphs.Add (Object), хотя я все равно застряну в любом случае.

1 Ответ

0 голосов
/ 06 ноября 2019

Если я правильно понял вопрос, вы хотите вставить текст с двумя знаками абзаца? Простейшим C # для этого будет:

string text = "Hello, World!\n\n";
BC.SetThisField(text);
  • \n или \r создает знак абзаца (ANSI 13) в Word.

  • Другая возможность состоит в объединении char(13).

  • Там также InsertParagraphAfter, но для этого требуется дополнительный шаг и цель Range object.

  • Paragraphs.Add() вставит один абзац, но для вставки более одного его нужно будет запустить в цикле, а также потребуется Rangeобъект как цель.

Microsoft.Office.Interop.Word.Paragraph.Next(ref object count); будет не вставлять абзацы и вернет ошибку, если код попытается выполнить действие с несуществующим абзацем,(Если код попытался присвоить текст абзацу, например.)

...