Форматирование удалено при замене текста из части заголовка документа Word

1

Я создаю приложение, которое принимает документ и заменяет некоторые параметры с заданными значениями. Проблема заключается в том, что я заменяю значение параметра @CCompany на любой текст, который форматирование удаляется. Фактический документ выглядит следующим образом.

Изображение 174551

Затем после замены параметра @CCompany цвет этого параметра и строк удаляются.

На следующем снимке экрана 20142015 - это значение, которое было заменено параметром @CCompany.

Изображение 174551

Код для замены текста заголовка документа, который я использую, приведен здесь.

foreach (Word.Section section in myDocUpdate.Sections)
{
    Word.Range headerRange = section.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
    headerRange.Text = headerRange.Text.Replace("@CCompany", '20142015');
}

Мое требование - когда я заменяю параметр назначенным значением, тогда форматирование не следует удалять. Что я должен сделать для этого? есть ли другой способ сделать это? например, с помощью field или textarea field. Но обязательно, чтобы текст заголовка должен быть написан в заголовке документа Word.

Спасибо заранее, любая помощь будет оценена по достоинству.

  • 0
    просто чтобы уточнить> ваш результат должен быть EMPLOYMENT AGREEMENT | 20142015 , верно?
  • 1
    да правильно. он должен отображаться так же, как на снимке экрана выше. просто значение должно быть заменено, а форматирование не должно быть удалено.
Теги:
ms-word

2 ответа

0
Лучший ответ

После того, как я наконец попытаюсь найти решение. Но это не значит, что решение дано raj не помогло. да, он тоже может работать. но, к сожалению, дизайн моего документа был очень сложным. Поэтому всякий раз, когда я пытаюсь заменить значение из части заголовка. документ удаляет формат, который я дал этому параметру (@CCompany).

Я сделал это, используя поле (Insert-> Quick Part-> Поле). Теперь он отлично работает.

Microsoft.Office.Interop.Word.HeadersFooters headers = section.Headers;
foreach (Microsoft.Office.Interop.Word.HeaderFooter header in headers)
{
    Word.Fields fields = header.Range.Fields;
    foreach (Word.Field field in fields)
    {
        //I can check also the field text which i want to replace 
        //if there are multiple fields created with different value
        if (field.Type == Microsoft.Office.Interop.Word.WdFieldType.wdFieldUserName)
        {
            field.Select();
            field.Delete();
            wordApp.Selection.TypeText("Company Name");
        }
    }
}
1

Попробуйте сделать копию текущего форматирования с помощью ParagraphFormat.Duplicate и восстановить его после изменения текста. Вот пример.

foreach (Word.Section section in myDocUpdate.Sections)
{
    Word.Range headerRange = section.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
var oldHeaderFormat = headerRange.ParagraphFormat.Duplicate;
    headerRange.Text.Replace("@CCompany", '20142015');
    headerRange.ParagraphFormat = oldHeaderFormat;
}
  • 1
    Спасибо за ваш ответ. позвольте мне попробовать это

Ещё вопросы

Сообщество Overcoder
Наверх
Меню