Проблема с получением цветов фона ячейки Excel в C # - PullRequest
5 голосов
/ 05 июня 2009

Я пытаюсь получить цвет фона некоторых ячеек на листе Excel в C #. Я использую следующий код:

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

Соответствующее значение Hex - 8000

Соответствующий мне цвет - Белый

Теперь в случае 1, я думаю, мне следует интерпретировать шестнадцатеричное значение FF как # FF0000, чтобы получить его как красный? В случае 3, я должен интерпретировать шестнадцатеричное значение 8000 как # 008000, чтобы получить зеленый?

Есть ли способ, где я могу напрямую получить шестизначное шестнадцатеричное значение, которое будет именно того цвета, который я хочу? Я получаю неправильные десятичные значения или неправильно преобразовываю десятичное число в шестнадцатеричное?

А что происходит в случае 2? Здесь я получаю шестизначное шестнадцатеричное значение, но оно совершенно неверно. FF0000 явно красный, а не синий.

Ответы [ 2 ]

9 голосов
/ 08 декабря 2009

Эта работа для меня:

<code>
int colorNumber = System.Convert.ToInt32(((Range) worksheet.Cells[rowNumber,columnNumber]).Interior.Color);
Color color = System.Drawing.ColorTranslator.FromOle(colorNumber);
1 голос
/ 05 июня 2009

попробуйте это:

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

(предупреждение, я не проверял это)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...