Search code examples
c#excelepplus

Change the cell color using conditional formatting with Epplus


I'm using EPPlus to create a spreadsheet in Excel, my goal and color the cells according to the values that exist in column F.

Conditional Formatting

//Orange
var conditionalFormattingRule01 = worksheet.ConditionalFormatting.AddExpression(worksheet.Cells[inital_line, 1, last_line, final_column]);
conditionalFormattingRule01.Formula = "($F9<=15)";
conditionalFormattingRule01.Style.Fill.PatternType = ExcelFillStyle.Solid;
conditionalFormattingRule01.Style.Fill.BackgroundColor.Color = Color.FromArgb(255, 192, 0);

//Yellow
var conditionalFormattingRule02 = worksheet.ConditionalFormatting.AddExpression(worksheet.Cells[inital_line, 1, last_line, final_column]);
conditionalFormattingRule02.Formula = "AND($F9>15;$F9<=30)";
conditionalFormattingRule02.Style.Fill.PatternType = ExcelFillStyle.Solid;
conditionalFormattingRule02.Style.Fill.BackgroundColor.Color = Color.FromArgb(255, 239, 153);

//Blue
var conditionalFormattingRule03 = worksheet.ConditionalFormatting.AddExpression(worksheet.Cells[inital_line, 1, last_line, final_column]);
conditionalFormattingRule03.Formula = "AND($F9>30;$F9<=60)";
conditionalFormattingRule03.Style.Fill.PatternType = ExcelFillStyle.Solid;
conditionalFormattingRule03.Style.Fill.BackgroundColor.Color = Color.FromArgb(155, 194, 230);

//Green
var conditionalFormattingRule04 = worksheet.ConditionalFormatting.AddExpression(worksheet.Cells[inital_line, 1, last_line, final_column]);
conditionalFormattingRule04.Formula = "($F9>60)";
conditionalFormattingRule04.Style.Fill.PatternType = ExcelFillStyle.Solid;
conditionalFormattingRule04.Style.Fill.BackgroundColor.Color = Color.FromArgb(182, 215, 168);

//Red
var conditionalFormattingRule05 = worksheet.ConditionalFormatting.AddExpression(worksheet.Cells[inital_line, 1, last_line, final_column]);
conditionalFormattingRule05.Formula = "($F9=\"Overdue\")";
conditionalFormattingRule05.Style.Fill.PatternType = ExcelFillStyle.Solid;
conditionalFormattingRule05.Style.Fill.BackgroundColor.Color = Color.FromArgb(234, 153, 153);

Message when you open the file :

We found a problem with some content in 'FileName.xlsx'.Do you want us to try to recover as much as we can? If you trust the source of this workbook, Click Yes.

I do not understand what the error of my formula.


Solution

  • In AND formulas replace semicolons with commas, for example:

    conditionalFormattingRule02.Formula = "AND($F9>15,$F9<=30)";
    ...
    conditionalFormattingRule03.Formula = "AND($F9>30,$F9<=60)";