How to apply TimePeriod conditional formatting in Excel using C#?
14 Jul 20254 minutes to read
You can apply TimePeriod-based conditional formatting in an Excel worksheet using the IConditionalFormats interface.
The following examples show how to highlight cells that match specific time periods in C# (cross-platform and Windows-specific) and VB.NET.
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
FileStream inputStream = new FileStream(Path.GetFullPath(@"Data/Input.xlsx"), FileMode.Open, FileAccess.Read);
IWorkbook workbook = application.Workbooks.Open(inputStream);
IWorksheet worksheet = workbook.Worksheets[0];
//Apply conditional format for specific time period
IConditionalFormats conditionalFormats = worksheet.UsedRange.ConditionalFormats;
IConditionalFormat conditionalFormat = conditionalFormats.AddCondition();
//Set the format type to 'TimePeriod' to apply time-based conditional formatting
conditionalFormat.FormatType = ExcelCFType.TimePeriod;
conditionalFormat.TimePeriodType = CFTimePeriods.Today;
//Set the background color of the matching cells
conditionalFormat.BackColor = ExcelKnownColors.Sky_blue;
//Saving the workbook
FileStream outputStream = new FileStream(Path.GetFullPath("Output/Output.xlsx"), FileMode.Create, FileAccess.Write);
workbook.SaveAs(outputStream);
//Dispose streams
outputStream.Dispose();
inputStream.Dispose();
}
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
IWorkbook workbook = application.Workbooks.Open("Input.xlsx");
IWorksheet worksheet = workbook.Worksheets[0];
//Apply conditional format for specific time period
IConditionalFormats conditionalFormats = worksheet.UsedRange.ConditionalFormats;
IConditionalFormat conditionalFormat = conditionalFormats.AddCondition();
//Set the format type to 'TimePeriod' to apply time-based conditional formatting
conditionalFormat.FormatType = ExcelCFType.TimePeriod;
conditionalFormat.TimePeriodType = CFTimePeriods.Today;
//Set the background color of the matching cells
conditionalFormat.BackColor = ExcelKnownColors.Sky_blue;
//Saving the workbook
workbook.SaveAs("Output.xlsx");
}
Using excelEngine As ExcelEngine = New ExcelEngine()
Dim application As IApplication = excelEngine.Excel
application.DefaultVersion = ExcelVersion.Xlsx
Dim workbook As IWorkbook = application.Workbooks.Open("Input.xlsx")
Dim worksheet As IWorksheet = workbook.Worksheets(0)
'Apply conditional format for specific time period
Dim conditionalFormats As IConditionalFormats = worksheet.UsedRange.ConditionalFormats
Dim conditionalFormat As IConditionalFormat = conditionalFormats.AddCondition()
'Set the format type to 'TimePeriod' to apply time-based conditional formatting
conditionalFormat.FormatType = ExcelCFType.TimePeriod
conditionalFormat.TimePeriodType = CFTimePeriods.Today
'Set the background color of the matching cells
conditionalFormat.BackColor = ExcelKnownColors.Sky_blue
'Save the workbook
workbook.SaveAs("Output.xlsx")
End Using
A complete working example to apply TimePeriod conditional formatting in an Excel is available on this GitHub page.