Pregunta

He estado tratando de crear una biblioteca para reemplazar el mergefields en un documento de Word 2003, todo funciona bien, excepto que pierdo el estilo aplicado al campo cuando reemplazarlo, hay una manera de mantenerlo

Este es el código que estoy usando para reemplazar los 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
    }
}

I intentado utilizar los métodos CopyFormat y PasteFormat en la selección, utilizando también la get_style y set_style pero sin Exent.

¿Fue útil?

Solución

En lugar de utilizar TypeText sobre la parte superior de su selección utilizar la propiedad del resultado del campo:

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

Esto asegurará ningún formato en el campo se mantiene.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top