Pergunta

Eu tenho tentado criar uma biblioteca para substituir os campos Mergefields em um documento do Word 2003, tudo funciona bem, exceto que eu perco o estilo aplicado ao campo quando o substituo, existe uma maneira de mantê -lo?

Este é o código que estou usando para substituir os campos:

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
    }
}

Tentei usar os métodos CopyFormat e BastEformat na seleção, também usando o get_style e o set_style, mas sem exposição.

Foi útil?

Solução

Em vez de usar o TypeText por cima de sua seleção, use a propriedade Resultado do campo:

          if (values.ContainsKey(fieldName))
          {
             mergeField.Result = (values[fieldName]);
          }

Isso garantirá que qualquer formatação no campo seja mantida.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top