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

5 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");
Run Code Online (Sandbox Code Playgroud)

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

情况1.

实际颜色 - 红色

返回十进制值-255

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

相应的颜色我得到了 - 蓝色

案例2.

实际颜色 - 蓝色

返回十进制值-16711680

对应的十六进制值-FF0000

我得到了相应的颜色 - 红色

案例3.

实际颜色 - 绿色

返回十进制值-32768

对应的十六进制值 - 8000

相应的颜色我得到了白色

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

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

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

Cam*_*nho 9

这项工作对我来说:


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


yoy*_*sef 1

尝试这个:

System.Color col = System.Drawing.ColorTranslator.FromOle((int) r.Interior.Color);
string htmlCol = System.Drawing.ColorTranslator.ToHtml(col);
Run Code Online (Sandbox Code Playgroud)

(警告,我没有测试过)