Я создаю приложение, которое принимает документ и заменяет некоторые параметры с заданными значениями. Проблема заключается в том, что я заменяю значение параметра @CCompany
на любой текст, который форматирование удаляется. Фактический документ выглядит следующим образом.
Затем после замены параметра @CCompany
цвет этого параметра и строк удаляются.
На следующем снимке экрана 20142015
- это значение, которое было заменено параметром @CCompany
.
Код для замены текста заголовка документа, который я использую, приведен здесь.
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.
Спасибо заранее, любая помощь будет оценена по достоинству.
После того, как я наконец попытаюсь найти решение. Но это не значит, что решение дано 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");
}
}
}
Попробуйте сделать копию текущего форматирования с помощью 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;
}
EMPLOYMENT AGREEMENT | 20142015
, верно?