У меня есть создатель отчетов, который создает начало отчета в слове.Word остается открытым для пользователя, чтобы продолжить работу с отчетом.Построитель отчетов получает rtf из базы данных, которая будет использоваться в качестве абзацев.Для каждого RTF в документе создается абзац, и к нему добавляется RTF.
Кажется, что я прочитал, подразумевает, что если я хочу вставить RTF в документ Word, тогда я помещаю его в буфер обменавставьте его из буфера обмена в слово.Это прекрасно работает, за исключением того, что на самом деле не помещает это в абзац так, как я хочуКогда вызывается метод вставки, он фактически не помещает rtf в диапазон абзаца, он просто вставляет его там, где начинается абзац.Он не перезаписывает абзац, абзац все еще существует под блоком RTF, который я вставил.Перемещение диапазона на единицу для размещения меток абзаца не работает, вместо этого просто вставляется под абзац.Я думаю, что для этого нужно использовать метод Insert (), а не метод Paste (), однако я не знаю, как это сделать, и не могу найти никакой информации, как это сделать.Я могу вставлять из строительных блоков или вставлять обычный текст нормально, но то, что здесь вставляется, должно быть отформатированным текстом.Форматированный текст имеет сочетание стилей и т. Д., Которые создает другой пользователь.
Код для копирования в буфер обмена и вставки следующий:
Clipboard.SetText(richTextBox1.Rtf, TextDataFormat.Rtf);
oPara[i].Range.Paste();
Я знаю, что вы можете вставлять строительные блокив абзацы, который сохраняет форматирование абзаца, со следующим:
tTemplate.BuildingBlockEntries.Item(foundList[i]).Insert(oPara[i].Range.FormattedText);
, но я не могу найти, как вы достигли бы этого в моем сценарии.
Причина, по которой я хотел бывставить его в абзац, чтобы отредактировать некоторые аспекты формата и убедиться, что такие вещи, как не разбивать строки на страницах и т. д.
Код, который я сейчас использую для создания и вставки, такой:
Word.Paragraph[] oPara = new Word.Paragraph[foundList.Count];
for (int i = 0; i < foundList.Count; i++)
{
oPara[i] = oDoc.Content.Paragraphs.Add();
Clipboard.SetText(foundList[i].Paragraph, TextDataFormat.Rtf);
oPara[i].Range.InsertParagraphAfter();
oPara[i].Range.Paste();
oPara[i].KeepTogether = -1;
oPara[i].Range.Font.Size = 10;
oPara[i].Range.Font.Name = "Arial";
}
Я проверил, где абзац был точно визуально со строкой
oPara[0].Range.Select(); //To see first paragraph
В результате rtf вставлен в том месте, где начинается абзац, а абзац чуть ниже вставленного rtf.Как бы вы вставили rtf так, как я хочу, в абзац в MS-Word?
РЕДАКТИРОВАТЬ: вызов метода свернуть не делает то, что я хочу, чтобы