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

时间:2009-06-05 17:39:53

标签: c# excel colors

我试图在C#中的Excel工作表中获取某些单元格的背景颜色。 我正在使用以下代码:

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

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

案例1。

实际颜色 - 红色

返回十进制值-255

对应的十六进制值-FF(或0000FF)

我得到的相应颜色 - 蓝色

案例2。

实际颜色 - 蓝色

返回十进制值-16711680

对应的十六进制值-FF0000

我得到的相应颜色 - 红色

案例3。

实际颜色 - 绿色

返回十进制值-32768

对应的十六进制值-8000

我得到的相应颜色 - 白色

现在在案例1中,我想我应该将FF的十六进制值解释为#FF0000以使其为红色? 在第3种情况下,我应该将8000的十六进制值解释为#008000以获得绿色?

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

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

2 个答案:

答案 0 :(得分:9)

这项工作对我来说:


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

答案 1 :(得分:1)

试试这个:

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

(警告,我没有测试过这个)