Вместо того, чтобы пытаться присвоить контент всего документа, используйте Range
объекты в качестве «целей» данных. Каждый раздел текста, который должен быть отформатирован по-разному, должен быть вставлен отдельно (поэтому вы не можете использовать +=
для всего содержимого).
Исходя из примера в вопросе, это может выглядеть примерно так:
Word.Range rngTarget = oDoc.Content;
object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd;
foreach (ReportItem reportItem in reportItems)
{
if (reportItem is ReportText reportText)
{
rngTarget.Text = reportText.Heading;
rngTarget.Font.Size = 12;
rngTarget.Bold = -1;
rngTarget.Collapse(ref oCollapseEnd);
rngTarget.Text += reportText.Text;
rngTarget.Font.Size = 10;
rngTarget.Bold = 0;
rngTarget.Collapse(ref oCollapseEnd);
}
}
oDoc.Save();
oDoc.Close();
word.Quit();
Если вы абсолютно уверены, что должны использовать +=
, вам нужно включить «маркеры» в текст, чтобы указать начальную и конечную точки «Заголовок» и «Текст». После того, как содержимое будет вставлено, вам нужно будет использовать функциональность Word Find
, чтобы найти их и применить форматирование.