ClosedXML при работе с условными форматами с использованием формул - формула неверна
Я использую условное форматирование с ClosedXML, и у меня есть 2 проблемы с ним. Во-первых, если я устанавливаю условие на основе значения, например, так:
> RangeToAdd.AddConditionalFormat().WhenLessThan(0).Fill.SetBackgroundColor(XLColor.Red).Font.SetFontColor(XLColor.Red);
Однако, когда мне нужно установить относительную ячейку, она не работает. Вот что я попробовал:
RangeToAdd.AddConditionalFormat().WhenLessThan("\"=RC[-19]\"").Fill.SetBackgroundColor(XLColor.Yellow);
RangeToAdd.AddConditionalFormat().WhenGreaterThan("\"=RC[-19]+RC[-18]+RC[-17]\"").Fill.SetBackgroundColor(XLColor.BabyBlue);
и это не работает. Это добавление ="=, а затем формула, которая не верна. Я следовал тому, что было сказано в документации здесь, и я попробовал это, не избегая также кавычек.
Другая проблема небольшая, но я не могу понять. Как мне установить условие, чтобы остановить, когда истина.
1 ответ
Решение
Вы добавляете слишком много цитат: согласно документации это просто
WhenLessThan("=RC[-19]") // But Excel can't read it unfortunately
Возможная работа вокруг
WhenLessThan("=" + RC(RangeToAdd,0,-19))
и так же
WhenGreaterThan("=" + RC(RangeToAdd,0,-19) + "+" + RC(RangeToAdd,0,-18) + "+" + RC(RangeToAdd,0,-17))
используя помощника
static string RC(IXLRange range, int r, int c)
{
return range.FirstCell().CellBelow(r).CellRight(c).Address.ToString(XLReferenceStyle.A1);
}