استبدال MergeFields في وثيقة Word 2003 والحفاظ على الاسلوب

StackOverflow https://stackoverflow.com/questions/1525808

سؤال

أحاول إنشاء مكتبة لاستبدال MERGEFILES على وثيقة Word 2003، كل شيء يعمل بشكل جيد، إلا أنني فقدت النمط المطبق على الحقل عندما استبدلته، هل هناك طريقة للحفاظ عليها؟

هذا هو الرمز الذي أستخدمه لاستبدال الحقول:

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

حاولت استخدام أساليب COPYFORMAT و PASTEFOMAT في التحديد، وكذلك استخدام GET_STYLE و SET_STYLE ولكن ليس من الضروري.

هل كانت مفيدة؟

المحلول

بدلا من استخدام TypeteXT عبر الجزء العلوي من اختيارك، استخدم خاصية هذه الخاصية للحقل:

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

سيضمن ذلك الاحتفاظ بأي تنسيق في الحقل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top