1

我正在尝试将色阶应用于 excel 范围。我下面的代码片段几乎可以满足我的要求,将最高单元格格式化为红色,将最低单元格格式化为黑色,并缩放其间的单元格,但我想让它根据单元格的值应用颜色比例,使用值为 0 的单元格为黑色,值为 255 的单元格为红色。使用当前代码,只有当最高单元格正好是 255 并且最低单元格正好是 0 时才会发生这种情况。任何其他最大和最小单元格值都会影响色标。如何应用色阶来引用这些静态值?任何帮助表示赞赏!

Excel.ColorScale cfColorScale = (Excel.ColorScale)(xlWorkSheet.get_Range("1:1").FormatConditions.AddColorScale(2));
        cfColorScale.ColorScaleCriteria[1].Type = Excel.XlConditionValueTypes.xlConditionValueLowestValue;
        cfColorScale.ColorScaleCriteria[1].FormatColor.Color = Color.FromArgb(0, 0, 0); // Black

        cfColorScale.ColorScaleCriteria[2].Type = Excel.XlConditionValueTypes.xlConditionValueHighestValue;
        cfColorScale.ColorScaleCriteria[2].FormatColor.Color = Color.FromArgb(255,0,0); //red
4

1 回答 1

0

除非我误解了您,否则我认为可以通过从所选范围的最小值和最大值更改值的范围来实现。

Range r = xlWorkSheet.get_Range("1:1");
int min = Convert.ToInt32(wb.Application.WorksheetFunction.Min(r));
int max = Convert.ToInt32(wb.Application.WorksheetFunction.Max(r));

ColorScale cfColorScale = (ColorScale)(r.FormatConditions.AddColorScale(2));
cfColorScale.ColorScaleCriteria[1].Type = XlConditionValueTypes.xlConditionValueLowestValue;
cfColorScale.ColorScaleCriteria[1].FormatColor.Color = Color.FromArgb(min, 0, 0);

cfColorScale.ColorScaleCriteria[2].Type = XlConditionValueTypes.xlConditionValueHighestValue;
cfColorScale.ColorScaleCriteria[2].FormatColor.Color = Color.FromArgb(max, 0, 0);

当然,除非您预计这些值会发生变化并且您希望它自动调整——如果是这种情况,那么您将需要使用工作表更改事件来检查。

于 2018-07-22T02:43:53.467 回答