我有一个word文档,其中的文本有很多颜色。我想找到该文档中使用的颜色,以便我可以在其前后放置一个字符串。它将颜色加载到Winforms的UI中。 我试图找到并替换所有wdColors列表,如下所示:
doc.Selection.Find.Font.Color = wdColor.Red
但是,如果文本的颜色在此wdColor中,则可以正常工作。 但是有些颜色是数字,而不是枚举。 另一个问题是,文档上的颜色可能是相同的,但是有时它具有wdColor并增加了一个数字。例如,红色可以是wdColorRed,数字225。如果存在一个范围,其FontColor = 225,并且我将尝试搜索wdColorRed,那谁找不到它。 如何在不循环的情况下找到文档中的颜色,将每个字符都扔出去并检查其颜色? 我有这个代码
var name = Enum.GetValues(typeof(word.WdColor)).Cast<word.WdColor>().ToList();
var app = (word.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application");
var doc = app.ActiveDocument;
for (int i = 0; i < name.Count; i++)
{
var found = FindAndReplace(app, "", "", false, name[i]);
if (found)
{
flowLayoutPanel1.Controls.Add(new HighLightControl(name[i].ToString(), name[i]));
}
app.Selection.HomeKey(word.WdUnits.wdStory);
}