Изменить цвет фона ячейки на основе текста ячейки в Excel, используя C # EPPlus - PullRequest
1 голос
/ 24 мая 2019

Я пытаюсь изменить цвет фона ячейки в зависимости от ее текстового содержимого. Например: для текста = "Выполняется" он должен быть желтым, для текста = "Завершено" он должен быть зеленым. Не понимаю, как начать автоматизацию с помощью 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

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;

Цвет должен быть изменен на Желтый для текста в процессе выполнения в ячейке

1 Ответ

1 голос
/ 24 мая 2019

Вот несколько способов достижения этого.

С выражением формулы вам нужно использовать формат 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;
...