30

I can set the background color of a cell or range of cells like so:

rowRngprogramParamsRange.Style.Fill.PatternType = ExcelFillStyle.Solid;
rowRngprogramParamsRange.Style.Fill.BackgroundColor.SetColor(Color.DarkRed);

I have not been able to set the font color, though. I tried this:

rowRngprogramParamsRange.Style.Font.Color = Color.Red;

...which failed to compile with two err msgs: the first, that I cannot assign System.Drawing.Color to OfficeOpenXml.Style.ExcelColor, and the second that the property is readonly anyway.

Just for grin and bear its, I tried casting the value:

rowRngprogramParamsRange.Style.Font.Color = (OfficeOpenXml.Style.ExcelColor)Color.Red;

...and I now get, "Cannot convert type 'System.Drawing.Color' to 'OfficeOpenXml.Style.ExcelColor'"

Most everything in EPPlus is pretty easy, certainly easier than Excel Interop, but this one has me baffled. How does one assign a color to a font for a range in EPPlus?

B. Clay Shannon-B. Crow Raven
  • 8,547
  • 144
  • 472
  • 862

2 Answers2

55

It's safe to assume Style.Fill.BackgroundColor and Style.Font.Color are both of type ExcelColor, so just use the same SetColor() method you used to set the background color.

rowRngprogramParamsRange.Style.Font.Color.SetColor(Color.Red);
Grant Winney
  • 65,241
  • 13
  • 115
  • 165
1

In addition, I'd say that if you want the exact excel color, the best way I've found is by copying a screenshot of an excel spreadsheet displaying the desired color into ms paint, to get its hex code from there. after that, you just add the so obtained the rgb code this way.

rowRngprogramParamsRange.Style.Font.Color.SetColor(0, 244, 176, 132)

The first parameter can stay at 0. The current color is orange accent 2 lighter 40. Light salmon is close to that, but not quite..

Fjodr
  • 919
  • 13
  • 32