C# 使用range.find使用vsto搜索整个文档时,如何跳过表?
现在我想遍历整个word文档,遍历range.find。我需要跳过文档中的表格,然后对遍历的字符进行自动排版,但我还没有找到排除表格的方法。有没有办法解决这个问题 信息[WdInformation.wdWithInTable]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
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。