C#条件格式excel

时间:2012-06-01 01:52:54

标签: c# excel formatting excel-2007 excel-interop

在我的项目中,我有代码根据像这样的单元格值条件格式化单元格的背面颜色:

//if value is 1 than colorIndex is 3;
Excel.FormatCondition condition = colorRange.FormatConditions.Add(
    Type: Excel.XlFormatConditionType.xlTextString, 
    Operator: Excel.XlFormatConditionOperator.xlEqual,
    Formula1: "=1");
condition5.Interior.ColorIndex = 3;

此条件正常,但以下代码中的条件不起作用:

//if value is Red Color than colorIndex is 3;
Excel.FormatCondition condition = colorRange.FormatConditions.Add(
    Type: Excel.XlFormatConditionType.xlTextString, 
    Operator: Excel.XlFormatConditionOperator.xlEqual,
    Formula1: "=Red Color");
condition5.Interior.ColorIndex = 3;

我收到的错误消息是“参数不正确”

我做错了什么?

2 个答案:

答案 0 :(得分:1)

我认为错误来自于您传递的Formula1参数是一个公式。这意味着它应该像您在Excel单元格中手动编写的公式一样编写。这意味着当您将“红色”作为参数编写时,Excel会尝试将其转换为公式,但语法错误并且它会给您错误。

你可以尝试只放“=红色”(没有字符串的颜色部分),它不会给你一个错误,但它无论如何都不会起作用,因为它会比较单元格中的值与名为Red的单元格中包含的那个(我想你的工作表中没有这样的单元格)。

解决方案就是“以这种方式围绕你串起来:

Excel.FormatCondition condition = colorRange.FormatConditions.Add(
    Type: Excel.XlFormatConditionType.xlTextString, 
    Operator: Excel.XlFormatConditionOperator.xlEqual,
    Formula1: "=\"Red Color\"");

答案 1 :(得分:1)

你可以尝试一下。这段代码为我提供了解决方案

 Excel.FormatCondition condition = colorRange.FormatConditions.Add(
     XlFormatConditionType.xlCellValue, 
     XlFormatConditionOperator.xlEqual,
     "=\"Red Color\"", 
     Type.Missing, 
     Type.Missing, 
     Type.Missing, 
     Type.Missing, 
     Type.Missing);