Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用range.find使用vsto搜索整个文档时,如何跳过表?_C#_Ms Word_Vsto - Fatal编程技术网

C# 使用range.find使用vsto搜索整个文档时,如何跳过表?

C# 使用range.find使用vsto搜索整个文档时,如何跳过表?,c#,ms-word,vsto,C#,Ms Word,Vsto,现在我想遍历整个word文档,遍历range.find。我需要跳过文档中的表格,然后对遍历的字符进行自动排版,但我还没有找到排除表格的方法。有没有办法解决这个问题 信息[WdInformation.wdWithInTable] Range sRange=Globals.ThisAddIn.Application.Selection.Range Range fR=wordDoc.Range(sRange.Start,sRange.End); fR.Find.ClearFormatting(); f

现在我想遍历整个word文档,遍历range.find。我需要跳过文档中的表格,然后对遍历的字符进行自动排版,但我还没有找到排除表格的方法。有没有办法解决这个问题

信息[WdInformation.wdWithInTable]

Range sRange=Globals.ThisAddIn.Application.Selection.Range
Range fR=wordDoc.Range(sRange.Start,sRange.End);
fR.Find.ClearFormatting();
fR.Find.Text=“[a-zA-Z0-9]{1,}”;
fR.Find.Replacement.ClearFormatting();
fR.Find.MatchWildcards=true;
//fR.Find.Wrap=WdFindWrap.wdFindContinue;
fR.Find.Forward=真;
对象缺失=类型。缺失;
fR.Find.Execute(参考缺失、参考缺失、参考缺失、参考缺失、参考缺失、,
参考缺失,参考缺失,参考缺失,参考缺失,参考缺失,参考缺失,
参考缺失、参考缺失、参考缺失、参考缺失、参考缺失、参考缺失);
while(fR.Find.Found)
{
int rs=fR.启动;
int re=前端;
如果(rs>sRange.End | | re

我希望排版数据不会以任何方式影响表格,但它是无用的。

可以使用
Word.WdInformation.wdWithInTable
来确定表格中是否有
范围
选择

while (fR.Find.Found && !(bool)fR.get_Information(Word.WdInformation.wdWithInTable))
{
    Debug.Print("Not in a table");
}
在Word COM世界中,这是一个名为
Information
的属性,它接受各种参数并返回不同类型的信息(布尔值、整数等),因为C#不支持接受参数的属性。这将转换为PIAs中的
get_Information
方法。此外,由于返回值并非都是相同的数据类型,因此该方法返回一个
对象
,这意味着需要显式转换返回的值

下面的代码片段基于问题中的代码,显示了如何测试找到的
范围
是否不在表中

while (fR.Find.Found && !(bool)fR.get_Information(Word.WdInformation.wdWithInTable))
{
    Debug.Print("Not in a table");
}

您可以在问题中的代码前显示
信息[WdInformation.wdWithInTable]
。这肯定是相关的,使用它有什么问题?例如
while(fR.Find.Found&&fR.get_Information(WdInformation.wdWithInTable)
我在找到它时,不知道是否需要使用wdWithInTable。