Найдите таблицу MS Word, содержащую определенный текст - PullRequest
2 голосов
/ 23 марта 2012

У меня есть документ MS Word, похожий на этот enter image description here

Теперь я хочу найти, в какой таблице содержится фраза "/ CCID_ntRow /". Как видно из структуры документа, это вторая таблица. Но в каждой таблице, которую я перебираю, возвращение Find.Execute возвращает true. Вот мой код:

int whichTable = 1; //starting index is 1, not 0

do {
    doc.Tables[whichTable].Range.Find.ClearFormatting();
    doc.Tables[whichTable].Range.Find.Wrap = MSWord.WdFindWrap.wdFindContinue;
    doc.Tables[whichTable].Range.Find.Text = "/CCID_ntRow/";
    doc.Tables[whichTable].Range.Select();
    isFound = doc.Tables[whichTable].Range.Find.Execute(ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
    if (isFound == true) {
        //everytime, isFound returns true. The right must be 2
        break;
    }
    whichTable++;
} while (true);

Пожалуйста, помогите мне решить это. Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 17 января 2013

Мы можем преобразовать все элементы таблиц в IEnumerable типа Table, затем мы можем перейти к использованию запросов LINQ для получения требуемой таблицы.

var requiredTable = Tables.Cast<Table>().FirstOrDefault(t => t.Range.Text.Contains("SOME TEXT"));
1 голос
/ 23 марта 2012

Range.Find.Execute неправильно в вашем коде.Попробуйте ниже это работает

   isFound = doc.Tables[whichTable].Range.Find.Execute("/CCID_ntRow/", ref missing, ref missing, ref missing, ref missing, 
                ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, 
                ref missing, ref missing, ref missing);
...