Changing an Excel cell's backcolor using hex results in Excel displaying completely different color in the spreadsheet Changing an Excel cell's backcolor using hex results in Excel displaying completely different color in the spreadsheet vba vba

Changing an Excel cell's backcolor using hex results in Excel displaying completely different color in the spreadsheet


I finally figured it out, after lots of tests, and it was something really simple. Apparently, Excel's Interop library has a bug and is reversing the Red and Blue values, so instead of passing it a hex of RGB, I need to pass BGR, and suddenly the colors work just fine. I'm amazed that this bug isn't documented anywhere else on the internet.

So if anyone else ever runs into this problem, simply pass Excel values in BGR values. (Or if using Color.FromArgb(), pass in Color.FromArgb(B, G, R))


You need to convert the color from hex to Excel's color system as follows:

ColorConverter cc = new ColorConverter();worksheet.Cells[1, 1].Interior.Color = ColorTranslator.ToOle((Color)cc.ConvertFromString("#F1DCDB"));

It's not really a bug, since Excel's color system has always been this way. It's just one more thing that makes C# - Excel interop a pain.


Please note that this is not a bug!Red starts from the lower bit and Green is in the middle and Blue takes the highest bits

B G R
00000000 00000000 00000000

The calculation is: (65536 * Blue) + (256 * Green) + (Red)

Thank you.