How to set traffic lights icon in Excel conditional formatting using C#?

The following code snippets illustrate how to set traffic lights icon in Excel conditional formatting in C# (cross-platform and Windows-specific) and VB.NET.

using (ExcelEngine excelEngine = new ExcelEngine())
{
    IApplication application = excelEngine.Excel;
    application.DefaultVersion = ExcelVersion.Xlsx;
    IWorkbook workbook = application.Workbooks.Create(1);
    IWorksheet worksheet = workbook.Worksheets[0];

    //Add data and formatting to the worksheet
    worksheet.Range["A1"].Text = "Traffic Lights";

    //Add percentage values to cells A2 to A7 and format them as percentages
    worksheet.Range["A2"].Number = 0.95;
    worksheet.Range["A2"].NumberFormat = "0%";
    worksheet.Range["A3"].Number = 0.5;
    worksheet.Range["A3"].NumberFormat = "0%";
    worksheet.Range["A4"].Number = 0.1;
    worksheet.Range["A4"].NumberFormat = "0%";
    worksheet.Range["A5"].Number = 0.9;
    worksheet.Range["A5"].NumberFormat = "0%";
    worksheet.Range["A6"].Number = 0.7;
    worksheet.Range["A6"].NumberFormat = "0%";
    worksheet.Range["A7"].Number = 0.6;
    worksheet.Range["A7"].NumberFormat = "0%";

    //Adjust row height and column width of the used range
    worksheet.UsedRange.RowHeight = 20;
    worksheet.UsedRange.ColumnWidth = 25;

    //Apply the first conditional format
    IConditionalFormats condition = worksheet.UsedRange.ConditionalFormats;
    IConditionalFormat condition1 = condition.AddCondition();

    condition1.FormatType = ExcelCFType.CellValue;
    condition1.FirstFormula = "300";
    condition1.Operator = ExcelComparisonOperator.Less;
    condition1.FontColor = ExcelKnownColors.Black;
    condition1.BackColor = ExcelKnownColors.Sky_blue;

    //Apply the second conditional format
    IConditionalFormats condition2 = worksheet.UsedRange.ConditionalFormats;
    IConditionalFormat condition3 = condition2.AddCondition();
    condition3.FormatType = ExcelCFType.IconSet;
    IIconSet iconSet = condition3.IconSet;
    iconSet.IconSet = ExcelIconSetType.ThreeTrafficLights1;

    //Saving the workbook
    FileStream outputStream = new FileStream("Output.xlsx", FileMode.Create, FileAccess.Write);
    workbook.SaveAs(outputStream);
    outputStream.Dispose();
}
using (ExcelEngine excelEngine = new ExcelEngine())
{
    IApplication application = excelEngine.Excel;
    application.DefaultVersion = ExcelVersion.Xlsx;
    IWorkbook workbook = application.Workbooks.Create(1);
    IWorksheet worksheet = workbook.Worksheets[0];

    //Add data and formatting to the worksheet
    worksheet.Range["A1"].Text = "Traffic Lights";
    //Add percentage values to cells A2 to A7 and format them as percentages
    worksheet.Range["A2"].Number = 0.95;
    worksheet.Range["A2"].NumberFormat = "0%";
    worksheet.Range["A3"].Number = 0.5;
    worksheet.Range["A3"].NumberFormat = "0%";
    worksheet.Range["A4"].Number = 0.1;
    worksheet.Range["A4"].NumberFormat = "0%";
    worksheet.Range["A5"].Number = 0.9;
    worksheet.Range["A5"].NumberFormat = "0%";
    worksheet.Range["A6"].Number = 0.7;
    worksheet.Range["A6"].NumberFormat = "0%";
    worksheet.Range["A7"].Number = 0.6;
    worksheet.Range["A7"].NumberFormat = "0%";

    //Adjust row height and column width of the used range
    worksheet.UsedRange.RowHeight = 20;
    worksheet.UsedRange.ColumnWidth = 25;

    //Apply the first conditional format
    IConditionalFormats condition = worksheet.UsedRange.ConditionalFormats;
    IConditionalFormat condition1 = condition.AddCondition();

    condition1.FormatType = ExcelCFType.CellValue;
    condition1.FirstFormula = "300";
    condition1.Operator = ExcelComparisonOperator.Less;
    condition1.FontColor = ExcelKnownColors.Black;
    condition1.BackColor = ExcelKnownColors.Sky_blue;

    //Apply the second conditional format
    IConditionalFormats condition2 = worksheet.UsedRange.ConditionalFormats;
    IConditionalFormat condition3 = condition2.AddCondition();
    condition3.FormatType = ExcelCFType.IconSet;
    IIconSet iconSet = condition3.IconSet;
    iconSet.IconSet = ExcelIconSetType.ThreeTrafficLights1;

    workbook.SaveAs("Output.xlsx");
}
Using excelEngine As New ExcelEngine()
    Dim application As IApplication = excelEngine.Excel
    application.DefaultVersion = ExcelVersion.Xlsx
    Dim workbook As IWorkbook = application.Workbooks.Create(1)
    Dim worksheet As IWorksheet = workbook.Worksheets(0)

    ' Add data and formatting to the worksheet
    worksheet.Range("A1").Text = "Traffic Lights"

    ' Add percentage values to cells A2 to A7 and format them as percentages      
    worksheet.Range("A2").Number = 0.95
    worksheet.Range("A2").NumberFormat = "0%"
    worksheet.Range("A3").Number = 0.5
    worksheet.Range("A3").NumberFormat = "0%"
    worksheet.Range("A4").Number = 0.1
    worksheet.Range("A4").NumberFormat = "0%"
    worksheet.Range("A5").Number = 0.9
    worksheet.Range("A5").NumberFormat = "0%"
    worksheet.Range("A6").Number = 0.7
    worksheet.Range("A6").NumberFormat = "0%"
    worksheet.Range("A7").Number = 0.6
    worksheet.Range("A7").NumberFormat = "0%"

    'Adjust row height and column width of the used range    
    worksheet.UsedRange.RowHeight = 20
    worksheet.UsedRange.ColumnWidth = 25

    ' Apply the first conditional format
    Dim condition As IConditionalFormats = worksheet.UsedRange.ConditionalFormats
    Dim condition1 As IConditionalFormat = condition.AddCondition()

    condition1.FormatType = ExcelCFType.CellValue
    condition1.FirstFormula = "300"
    condition1.Operator = ExcelComparisonOperator.Less
    condition1.FontColor = ExcelKnownColors.Black
    condition1.BackColorRGB = Color.FromArgb(135, 206, 235) ' Sky blue

    ' Apply the second conditional format
    Dim condition2 As IConditionalFormats = worksheet.UsedRange.ConditionalFormats
    Dim condition3 As IConditionalFormat = condition2.AddCondition()
    condition3.FormatType = ExcelCFType.IconSet
    Dim iconSet As IIconSet = condition3.IconSet
    iconSet.IconSet = ExcelIconSetType.ThreeTrafficLights1
    ' Save the workbook
    workbook.SaveAs("Output.xlsx")
End Using

A complete working example to set traffic lights icon in Excel conditional formatting using C# is present on this GitHub page.