2009-06-03 2 views
6

배경색이있는 셀이있는 엑셀 시트가 있습니다. html 코드에서이 색상이 필요하므로 Excel.Range.Interior.Color를 RGB 형식 또는 System.Drawing.Color로 변환하고 싶습니다.C#에서 Excel.Range.Interior.Color를 System.Drawing.Color로 변환하는 방법?

그런 후 System.Drawing.ColorTranslator.ToHtml (System.Drawing.Color)를 사용하여 html 태그에서 사용할 색을 얻습니다.

내가하고 다음과 같은 시도 :

Excel.Range r = (Excel.Range)m_objRange[2, 2]; 
System.ComponentModel.TypeConverter converter = System.ComponentModel.TypeDescriptor.GetConverter(r.Interior.Color); 
       MessageBox.Show(""+converter.ConvertTo(r.Interior.Color,typeof(System.Drawing.Color))); 

을하지만 난 System.Drawing.Color

에 System.Double 변환 할 수 없습니다 오류가 발생
+0

엑셀 색상 값은 긴 RGB 값에 저장됩니다. 왼쪽에서 오른쪽의 색상 순서는 파란색, 녹색, 빨간색입니다. –

답변

4

Excel.Range.Interior.Color에 의해 반환되는 값은 색의 정수형 값

:

#FFFFFF 당신은 진수로 진수 값을 변환 할 필요가 16777215

같다 '# 000000 0

같다'. 거기에서 RGB로 변환하기 쉽습니다. (2 진수로 그룹 및 진수로 다시 변환) :

+0

효과가있었습니다. 고마워요 :) –

+1

3 년 반이 지난이 날이 .. :) 그룹을 8 진수로 변환합니다. 감사. – MarioTheHedgehog

13

그것은 ColorTranslator 당신을 위해 일을 할 수 있도록 훨씬 쉽게 :

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

을 그리고 당신은과 비주얼 스튜디오 내부 엑셀 프로젝트를 작성할 때 (대신 일반 상호 운용성 프로젝트의) 자동으로 생성 된 프록시 객체 당신은 그때를 int로 이중으로 r.Interior.Color 캐스팅해야하고, :

System.Drawing.Color col = System.Drawing.ColorTranslator.FromOle((int)((double) r.Interior.Color)); 
+0

완벽한 .. 나를 위해 더 잘 작동했습니다. –

관련 문제