2012-03-23 97 views
1

我有一个MS Word文档看起来像这样 enter image description here找到MS Word表格包含一个特定文本

现在我想找到这表包含短语“/ 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); 

请帮我解决这个问题。预先感谢您

回答

1

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); 
3

我们可以将所有的元素表转换为表类型的IEnumerable,然后我们就可以继续使用LINQ查询来获得所需的表。

var requiredTable = Tables.Cast<Table>().FirstOrDefault(t => t.Range.Text.Contains("SOME TEXT")); 
相关问题