如何使用C#知道ms word文档的背景颜色

时间:2010-09-21 12:29:07

标签: c# ms-word automation

我通过 Microsoft Office 12.0对象库使用 C#办公室( word )自动化。 我打开了一个“1.doc”文件,我需要检查这个文件是否有背景颜色。

注意:我的意思是通过以下步骤应用的背景颜色:

  • 打开MS Word 2003,然后打开文档。
  • 转到:格式菜单 - > 背景并选择颜色。

这就是我在C#中所拥有的:

Object oMissing = System.Reflection.Missing.Value;

        //OBJECTS OF FALSE AND TRUE
        Object oTrue = true;
        Object oFalse = false;
        Object fileName = "c:\\1.doc";

        //CREATING OBJECTS OF WORD AND DOCUMENT
        Word.Application oWord = new Word.Application();
        Word.Document oWordDoc = new Word.Document();

        //MAKING THE APPLICATION VISIBLE
        oWord.Visible = true;

        //ADDING A NEW DOCUMENT TO THE APPLICATION
        oWordDoc = oWord.Documents.Open(
            ref fileName, ref oMissing, ref oFalse, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing,
            ref oTrue, ref oMissing, ref oMissing, ref oMissing);
        Console.WriteLine(oWordDoc.Background.Fill.ForeColor.RGB);
        Console.WriteLine(oWordDoc.Background.Fill.BackColor.RGB);

我不知道ForeColor或BackColor是否代表我需要的颜色,我尝试选择不同的背景颜色并执行上面的代码,每次我得到一个不同的整数值,如(10092543,红色为255,... ..)但它没有意义,BackColor永远不会改变并固定在值(16777215)。 非常感谢。

1 个答案:

答案 0 :(得分:2)

你走在正确的轨道上。页面背景确实是Background对象的前景颜色。您看到的不同值对应于RGB颜色值的整数表示。

如果您对不同的颜色组件感兴趣,可以使用以下代码:

Color color = Color.FromArgb(oWordDoc.Background.Fill.ForeColor.RGB);
int red = color.R;
int green = color.G;
int blue = color.B;

<强>更新

Office对象模型使用的颜色似乎使用与System.Drawing.Color不同的内部格式,因此当您使用上面的示例代码时,通道可能会混淆(我忘了检查{{1的实际格式) }})。

您始终可以使用以下代码自行检索不同的颜色通道:

Word.ColorFormat.RGB