Замените поля слияния в документе Word 2003 и сохраните стиль
-
20-09-2019 - |
Вопрос
Я пытался создать библиотеку для замены полей слияния в документе Word 2003, все работает нормально, за исключением того, что при замене я теряю стиль, примененный к полю, есть ли способ сохранить его?
Это код, который я использую для замены полей:
private void FillFields2003(string template, Dictionary<string, string> values)
{
object missing = Missing.Value;
var application = new ApplicationClass();
var document = new Microsoft.Office.Interop.Word.Document();
try
{
// Open the file
foreach (Field mergeField in document.Fields)
{
if (mergeField.Type == WdFieldType.wdFieldMergeField)
{
string fieldText = mergeField.Code.Text;
string fieldName = Extensions.GetFieldName(fieldText);
if (values.ContainsKey(fieldName))
{
mergeField.Select();
application.Selection.TypeText(values[fieldName]);
}
}
}
document.Save();
}
finally
{
// Release resources
}
}
Я попытался использовать методы CopyFormat и PasteFormat при выделении, также используя get_style и set_style, но безрезультатно.
Решение
Вместо использования TypeText поверх выделенного элемента используйте свойство Result поля:
if (values.ContainsKey(fieldName))
{
mergeField.Result = (values[fieldName]);
}
Это гарантирует сохранение любого форматирования в поле.
Не связан с StackOverflow