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

时间:2019-05-24 15:16:45

标签: c# excel epplus epplus-4

我正在尝试根据其文本内容更改单元格的背景颜色。例如:对于文本=“进行中”,它应该是黄色,对于文本=“已完成”,它应该是绿色。没有任何线索可以继续使用C#进行自动化。

引用了以下链接,但没有运气

https://stackoverflow.com/questions/39484426/set-conditional-background-color-of-cell-based-on-text-using-epplus-in-c-net https://stackoverflow.com/questions/52737955/epplus-conditional-formatting

data.env <- new.env()
getSymbols("0005.HK", env=data.env)
ls.str(data.env)

0005.HK : An 'xts' object on 2007-01-02/2019-05-23 containing:
  Data: num [1:3058, 1:6] 143 144 145 144 142 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:6] "0005.HK.Open" "0005.HK.High" "0005.HK.Low" "0005.HK.Close" ...
  Indexed by objects of class: [Date] TZ: UTC
  xts Attributes:
List of 2
 $ src    : chr "yahoo"
 $ updated: POSIXct[1:1], format: "2019-05-24 23:14:45"

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

1 个答案:

答案 0 :(得分:1)

这里有两种不同的实现方法。

对于公式表达式,您需要使用格式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;

更直观地,您可以使用Equal类型表达式,而不是使用.AddEqual而不是AddExpression,然后在公式中仅使用"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;