在C#中获取Excel单元格背景颜色的问题

我想在C#中的Excel工作表中获取一些单元格的背景颜色。 我正在使用follwoing代码:

Excel.Range r = (Excel.Range)m_objRange[i, j]; int decValue = int.Parse(r.Interior.Color.ToString()); string hexValue = decValue.ToString("X"); 

所以我得到长十进制值,然后我转换成hex使用它成为一个HTML代码。 现在我得到正确的颜色有问题。 例如:

情况1。

实际颜色 – 红色

返回十进制值 – 255

对应hex值FF(或0000FF)

对应的颜色我得到了蓝色

案例2。

实际颜色 – 蓝色

返回十进制值-16711680

对应hex值 – FF0000

对应的颜色我得到红色

案例3。

实际颜色 – 绿色

返回十进制值 – 32768

对应hex值8000

对应的颜色我得到了白色

现在在情况1,我想我应该解释FF的hex值为#FF0000以获得它红色? 在情况3,我应该解释为8000的hex值#008000得到是绿色?

有没有一种方法,我可以直接得到六位hex值,这将正是我想要的颜色? 我得到错误的十进制值,或者我不正确地将十进制转换为hex?

案例2中发生了什么? 在这里,我得到六位hex值,但它是完全错误的。 FF0000显然是红色的而不是蓝色的。

这为我工作:

 int colorNumber = System.Convert.ToInt32(((Range) worksheet.Cells[rowNumber,columnNumber]).Interior.Color); Color color = System.Drawing.ColorTranslator.FromOle(colorNumber); 

尝试这个:

 System.Color col = System.Drawing.ColorTranslator.FromOle((int) r.Interior.Color); string htmlCol = System.Drawing.ColorTranslator.ToHtml(col); 

(警告,我没有testing这个)