使用 C# EPPlus 根据 excel 中单元格的文本更改单元格背景颜色

Change cell background color based on cell's text in excel using C# EPPlus

我正在尝试根据文本内容更改单元格的背景颜色。例如:对于 text = "In progress" 它应该是黄色,对于 text ="Completed" 它应该是绿色。没有得到任何使用 C# 进行自动化的线索。

参考了以下链接但没有成功

ExcelAddress _formatRangeAddress = new ExcelAddress("C2:C5");

var conditionalFormattingRule01 = workSheet.ConditionalFormatting.AddExpression(_formatRangeAddress);
conditionalFormattingRule01.Formula = "($C3=In Progress)";
conditionalFormattingRule01.Style.Fill.PatternType = ExcelFillStyle.Solid;
conditionalFormattingRule01.Style.Fill.BackgroundColor.Color = Color.Yellow;

单元格中进行中文本的颜色应更改为黄色

这里有几种不同的实现方式。

对于公式表达式,您需要使用格式 C2="In Progress",其中 C2 是条件格式适用范围内的顶部单元格 - 它仍将适用于范围内的其他单元格正确的范围。

var formatExpressionInProgress = worksheet.ConditionalFormatting.AddExpression(new ExcelAddress("C2:C5"));
formatExpressionInProgress.Formula = "C2=\"In Progress\"";
formatExpressionInProgress.Style.Fill.PatternType = ExcelFillStyle.Solid;
formatExpressionInProgress.Style.Fill.BackgroundColor.Color = Color.Yellow;

更直观地说,您可以通过使用 .AddEqual 而不是 AddExpression 来使用 Equal 类型表达式,然后您只需在公式中使用 "Completed" 来匹配条件应适用的位置。

var formatExpressionCompleted = worksheet.ConditionalFormatting.AddEqual(new ExcelAddress("C2:C5"));
formatExpressionCompleted.Formula = "\"Completed\"";
formatExpressionCompleted.Style.Fill.PatternType = ExcelFillStyle.Solid;
formatExpressionCompleted.Style.Fill.BackgroundColor.Color = Color.Green;