Frage

Ich habe versucht, eine Bibliothek zu erstellen, um die MERGEFIELDS auf einem Word 2003-Dokument zu ersetzen, funktioniert alles gut, außer dass ich der Stil auf das Feld angewandt verlieren, wenn ich es ersetzen, ist es eine Möglichkeit, es zu halten?

Dies ist der Code, den ich um die Felder ersetzen bin mit:

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

Ich habe versucht, die CopyFormat und PasteFormat Methoden bei der Auswahl verwendet wird, auch die get_style und set_style mit, aber ohne Exent.

War es hilfreich?

Lösung

Statt Typetext über die Oberseite Ihrer Wahl verwenden, um die das Ergebnis Eigenschaft des Feldes mit:

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

Dadurch wird sichergestellt, jede Formatierung im Bereich beibehalten wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top