【问题标题】:How to Copy or Extend Condition Formating from Worksheet Template using Epplus如何使用 Epplus 从工作表模板复制或扩展条件格式
【发布时间】:2019-05-05 05:39:36
【问题描述】:

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

我正在使用这个模板并动态地添加新列(可能是数百列)。

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

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

有什么办法,怎么做:

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

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

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

【问题讨论】:

    标签: c# epplus


    【解决方案1】:

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

    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"(空格,而不是逗号用于多个范围的地址)。因此,如果您想使用此功能,则必须执行 condition.Address.Address.Replace(' ',',') 。这在 EPPlus 中似乎不一致。

    API Documentation

    Adressing Sample

    Sample cs file for conditional formatting

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多