首页 > 解决方案 > EPPlus 和 C#:如何在范围上应用条件格式而不是附加到每个单元格

问题描述

我需要对范围应用条件格式,而不是将条件格式附加到每个单元格。我现在正在做的方式是缓慢的过程。我有一个巨大的单元格,我在 for 循环中附加了条件格式,这对我来说越来越慢。所以我正在寻找在范围内做同样事情的方法,这可能会减少一些迭代。

FileInfo existingFile = new FileInfo("Test.xlsx");
using (var package = new ExcelPackage(existingFile))
{
    ExcelWorkbook workBook = package.Workbook;

    var currentWorksheet = workBook.Worksheets.First();
    currentWorksheet.Workbook.CalcMode = ExcelCalcMode.Automatic;

    for (int i = 1; i < 12; i++)
    {
        ExcelAddress _formatRangeAddress = new ExcelAddress("$A$" + i);

        int j = 11 - i;
        string _statement = "=$A$" + i + ">$A$" + j;
        var f = currentWorksheet.ConditionalFormatting.AddExpression(_formatRangeAddress);
        f.Style.Fill.BackgroundColor.Color = Color.Green;
        f.Formula = _statement;

        _statement = " =$A$" + i + "<$A$" + j;
        f = currentWorksheet.ConditionalFormatting.AddExpression(_formatRangeAddress);
        f.Style.Fill.BackgroundColor.Color = Color.Red;
        f.Formula = _statement;
    }


    package.Save();
}

希望很清楚我在做什么。我正在将每个单元格的值与特定单元格进行比较。如果值小于,则颜色为红色,否则颜色为绿色。

我的问题是我在 for 循环中迭代以将条件格式附加到每个变慢的单元格。当我必须在许多单元格中进行迭代时,for 循环将需要一些时间。所以我想知道我可以对范围做同样的事情,而不是为每个单元格附加条件格式。

请告知如何对范围执行相同操作,但范围中的每个单元格值都将与特定单元格值进行比较。谢谢

标签: c#epplus

解决方案


推荐阅读