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

时间:2019-05-03 12:40:55

标签: c# epplus

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

我正在使用此模板,并且动态地添加了新列(可能是几百列)。

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

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

有什么方法吗?

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

  2. 或者有没有办法扩展现有条件格式设置规则的地址?

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

1 个答案:

答案 0 :(得分:2)

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

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

用逗号分隔范围。由于格式不只一种,因此您必须区分格式规则-最简单的方法是按其优先级:

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

将它们的范围分开来当然更合乎逻辑,但是恐怕没有EPPlus函数可以测试两个范围是否相交。但是您可以测试Address.AddressA1还是A3开头...

注意: :如果您如上所述读取Adress.Address,则会返回"C4:C8 G1:G3"(空格,而不是逗号,如果地址大于一个范围)。因此,如果要使用此方法,则必须执行condition.Address.Address.Replace(' ',',')。这似乎在EPPlus中是不一致的。

API Documentation

Adressing Sample

Sample cs file for conditional formatting