Sostituire i campi unione in un documento di Word 2003 e mantenere lo stile
-
20-09-2019 - |
Domanda
Ho cercato di creare una libreria per sostituire il mergefields su un documento di Word 2003, tutto funziona bene, tranne che perdo lo stile applicato al campo quando lo sostituisco, c'è un modo per tenerlo?
Questo è il codice che sto usando per sostituire i campi:
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
}
}
Ho provato utilizzando i metodi CopyFormat e PasteFormat nella selezione, utilizzando anche il get_style e set_style ma senza exent.
Soluzione
Invece di usare TypeText sopra la parte superiore della selezione utilizzare la proprietà il risultato del campo:
if (values.ContainsKey(fieldName))
{
mergeField.Result = (values[fieldName]);
}
Ciò assicurerà la formattazione nel campo viene mantenuto.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow