2009-06-03 28 views
6

Bazı arka plan rengine sahip bazı hücrelere sahip bir excel sayfam var. Bu rengi html koduna ihtiyacım var ve bu yüzden Excel.Range.Interior.Color'u RGB formatına veya System.Drawing.Color'a dönüştürmek istiyorum.Excel.Range.Interior.Color C# System.Drawing.Color nasıl dönüştürülür?

Bunu yaptıktan sonra, html etiketlerinde kullanılmak üzere renk almak için System.Drawing.ColorTranslator.ToHtml (System.Drawing.Color) kullanıyordum.

yaptığım aşağıdaki çalıştı:

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))); 

Ama ben System.Drawing.Color

için System.Double dönüştüremiyor bir hata alıyorum
+0

Excel renk değerleri uzun RGB değeri saklanır. Renklerin soldan sağa sırası Mavi, Yeşil, Kırmızıdır. –

cevap

4

Excel.Range.Interior.Color tarafından döndürülen değerdir bir rengin uzun bir tamsayı değeri.

Örnekler:

#FFFFFF Sen onaltılık içine ondalık değer dönüştürmek gerekiyor 16777215

eşittir '# 000000 0

eşittir'. Buradan, RGB'ye dönüştürmek kolaydır. (2 sekizli içine Grubu ve ondalık geri dönüştürün) :)

+0

Çalıştı. Teşekkürler :) –

+1

3 ve bir buçuk yıl sonra bu bana yardımcı olur ..:) Grup, sekizli bölümün içine. Teşekkürler. – MarioTheHedgehog

13

O ColorTranslator sizin için çalışma yapalım çok daha kolaydır:

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

Ve birlikte Visual Studio içindeki bir Excel projesini yazarken (yerine normal Interop'un projesinin) otomatik olarak oluşturulan vekil nesneleri tutup tekrar bir int çift için r.Interior.Color döküm gerekir ve:

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

mükemmel ... bu benim için daha iyi çalıştı ... teşekkürler. –

İlgili konular