如何使用 Epplus 从工作表模板复制或扩展条件格式

How to Copy or Extend Condition Formating from Worksheet Template using Epplus

我有 .xmls 模板文件,在第一列(A 列)中,我有一些示例数据和指定的条件格式(A1 和 A3 的规则)。

我正在使用此模板并动态添加新列(可能有数百列)。

每次我复制第一列的范围并将其插入到新列中。格式和样式会自动复制,没关系。

但是,我想做的也是复制第一列中指定的条件格式。 (复制 B1 和 B3 的规则或扩展这些列的现有规则)

有什么办法,怎么办:

  1. 从第一列复制条件格式规则并将其粘贴到第 n 列?

  2. 或者有什么办法,如何扩展现有条件格式规则的地址?

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

您可以设置条件格式的范围:

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

用逗号分隔范围。由于你有不止一种格式,你必须区分格式规则——最简单的方法是按它们的优先级:

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

当然,通过范围来区分它们会更合乎逻辑,但恐怕没有 EPPlus 函数来测试两个范围是否相交。但是您可以测试 Address.Address 是否以 A1A3 ...

开头

注意:如果你按照上面的设置阅读Adress.Address,你会得到"C4:C8 G1:G3"(Space, 多于一个范围的地址不是逗号)。所以如果你想使用它你必须做 condition.Address.Address.Replace(' ',',') 。这在 EPPlus 中似乎不一致。

API Documentation

Adressing Sample

Sample cs file for conditional formatting