Как получить тип поля слова - PullRequest
0 голосов
/ 28 января 2020

У меня есть файл Word с разными полями. Я хотел бы знать тип каждого поля. Я знаю, что есть метод с именем Field.GetType(), но он возвращает что-то вроде этого: System.__ComObject

Но я хотел бы знать, что WdFieldType имеет каждое поле. https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.word.wdfieldtype?view=word-pia#Microsoft_Office_Interop_Word_WdFieldType_wdFieldIncludeText

Проблема в том, что я не знаю, какие типы файлов используются людьми. И некоторые типы полей вызывают ошибки, когда я пытаюсь получить Результат. Вот почему я хотел бы исключить эти типы, но сначала я должен знать, какие типы существуют.

Мой код:

foreach (string LeitudNimi in Nimed)
{
    foreach (Field f in doc.Fields)
    {
        if (f.Type != WdFieldType.some field that is causing error)
        {
            if (f.Result.Text.ToLower() == LeitudNimi)
            { 
                f.Result.Text = $"{Nimi}"; 
                f.Unlink(); 
            }
        }
    }
}

И использовать этот код. Я сначала планирую сделать что-то вроде этого:

foreach (Field f in doc.Fields)
                        {var Type1 = f.GetType()
File.AppendAllText(@"C:\tulemus.txt", $"Field type is: {Type1}" + Environment.NewLine);}

1 Ответ

1 голос
/ 28 января 2020

Я думаю, что вы должны проверять значение [f.Type] (ссылка) так же, как вы делаете в первом примере кода. f.GetType () возвращает вам тип объекта C# экземпляра, который хранится в f

foreach (Field f in doc.Fields)
{
  File.AppendAllText(@"C:\tulemus.txt", $"Field type is: {f.Type}" + Environment.NewLine);
}
...