Как скопировать или расширить форматирование условий из шаблона рабочего листа с помощью Epplus - PullRequest
1 голос
/ 03 мая 2019

У меня есть .xmls файл шаблона, который находится в первом столбце (столбец A), где у меня есть пример данных и заданное условное форматирование (правила для A1 и для A3).

Я использую этот шаблон и динамически добавляю новые столбцы (возможно, сотни столбцов).

Каждый раз, когда я копирую диапазон первого столбца и вставляю его в новый столбец. Форматирование и стили копируются автоматически, это нормально.

Однако я также хочу скопировать УСЛОВНОЕ ФОРМАТИРОВАНИЕ, указанное в первом столбце. (Сделайте копию правил для B1 и B3 или расширьте существующее правило для этих столбцов)

Есть ли способ, как:

  1. Скопировать правило условного форматирования из первого столбца и вставить его в n-й столбец?

  2. Или есть способ, как расширить адрес существующего правила условного форматирования?

foreach (var condition in ws.ConditionFormating)
{
   condition.Address.Adress += " B1 B3";
}

1 Ответ

2 голосов
/ 05 мая 2019

Вы можете установить диапазон условного форматирования:

condition.Address = new ExcelAddress("C4:C8,G1:G3");

Разделите диапазоны запятыми. Поскольку у вас есть более одного форматирования, вы должны различать правила форматирования - проще всего по их приоритету:

if(condition.Priority == 2)
    condition.Address = new ExcelAddress("C4:C8,G1:G3");

Было бы более логично, конечно, отличить их по диапазонам, но, боюсь, нет функции EPPlus для проверки, пересекаются ли два диапазона. Но вы можете проверить, начинается ли Address.Address с A1 или A3 ...

Внимание: Если вы прочитаете Adress.Address, как указано выше, вы получите обратно "C4:C8 G1:G3" (Пробел, не запятая для адресов с более чем одним диапазоном). Так что если вы хотите работать с этим, вы должны сделать condition.Address.Address.Replace(' ',','). Это кажется противоречивым в EPPlus.

Документация API

Образец адреса

Пример файла cs для условного форматирования

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...