Vra

Ek het probeer om 'n biblioteek aan die MergeFields vervang op 'n Word 2003-dokument te skep, alles werk goed, behalwe dat ek verloor die styl toegepas op die veld toe ek dit vervang, is daar 'n manier om dit te hou?

Dit is die kode wat ek gebruik om die velde te vervang:

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

Ek het probeer om met behulp van die CopyFormat en PasteFormat metodes in die seleksie, ook met behulp van die get_style en set_style maar geen exent.

Was dit nuttig?

Oplossing

In plaas van die gebruik van TypeText oor die top van jou keuse gebruik die die resultaat eiendom van die Field:

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

Dit sal verseker enige opmaak in die veld behou.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top