使用Word interop查找具有特定格式的文本范围

时间:2014-11-22 00:34:42

标签: c# ms-word office-interop

我有一个MS Word加载项,需要仅根据其格式从一系列文本中提取文本:特别是在我的情况下,如果文本加下划线或突破,则字符/单词的范围是需要加下划线或突破,以便我可以跟踪它们。

我的第一个想法是使用Range.Findoutlined here,但是当我不知道我在寻找什么字符串时,它不会起作用:< / p>

var rng = doc.Range(someStartRange, someEndRange);

rng.Find.Forward = true;
rng.Find.Format = true;
// I removed this line in favor of putting it inside Execute()
//rng.Find.Text = "";

rng.Find.Font.Underline = WdUnderline.wdUnderlineSingle;

// this works
rng.Find.Execute("");

int foundNumber = 0;

while (rng.Find.Found)
{
    foundNumber++;
    // this needed to be added as well, as per the link above
    rng.Find.Execute("");
}

MessageBox.Show("Underlined strings found: " + foundNumber.ToString());

我很乐意自己解析文本,但不知道在知道格式的同时如何做到这一点。提前感谢任何想法。

修改

我更改了代码以修复查找下划线问题,并且通过该更改,while循环永远不会终止。更具体地说,rng.Find.Found找到带下划线的文本,但它会一遍又一遍地找到相同的文本,并且永远不会终止。

编辑2: 一旦我在while循环中添加了额外的Execute()调用,find就会根据需要运行。

1 个答案:

答案 0 :(得分:2)

你需要

rng.Find.Font.Underline  = wdUnderline.wdUnderlineSingle;

(目前您正在为指定的rng设置格式,而不是查找的格式)