2009-06-09 153 views
4

我刚刚发现了以下页面:Setting Conditional Formatting in Excel 2007这与我想要做的事很相似,但我似乎找不到适当的功能来做一些稍微不同的事情。Excel Interop条件格式

我想知道是否有人知道一种方法将条件格式应用到范围,基于一组文本值。例如。我想说:

如果你看到“InvalidValue1” OR“InvalidValue2”高亮红色 否则,如果你看到“警告”突出黄色

我有无效值的整个范围,以及可能的警告值。我还需要为大型数据集逐列进行此操作,因此在可能的情况下,我想使用内置的Excel功能突出显示范围内的错误。

有谁知道这是否可能?

问候

回答

5

我相信我设法找到一个解决问题的方法(虽然小区选择是相当奇怪的,我还没有完全整理了这一点呢。如我的公式使用A1这实际上意味着,由于C1所选范围)。

下面是我用别人感兴趣的代码:

string condition = @"=OR(ERROR1, ERROR2, ERROR3)"; 
var cfOR = (FormatCondition)targetSheet.get_Range("C1", "C10").FormatConditions.Add(XlFormatConditionType.xlExpression, Type.Missing,condition), Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 

cfOR.Interior.Color = 0x000000FF; 
cfOR.Font.Bold = true; 
cfOR.Font.Color = 0x00FFFFFF; 

注意,FormatConditions.Add()方法有不同版本的Excel的互操作的不同的签名。

1

如果你使用.NET 4.0,以下是使用动态和命名参数

dynamic range = sheet.Range("A2").Resize(rowCount, 11); 

const string redCondition = "=OR(ERROR1, ERROR2, ERROR3)"; 

dynamic format = range.FormatConditions.Add(XlFormatConditionType.xlExpression, Formula1: redCondition); 
format.Interior.Color = 0x0000FF; 
format.Font.Color = 0x00FFFF; 
2
using Excel = Microsoft.Office.Interop.Excel; 
... 
object mis = Type.Missing; 

Excel.FormatCondition cond = 
    (Excel.FormatCondition)range.FormatConditions.Add(Excel.XlFormatConditionType.xlCellValue, 
    Excel.XlFormatConditionOperator.xlEqual, "1", 
    mis, mis, mis, mis, mis); 
    cond.Interior.PatternColorIndex = Excel.Constants.xlAutomatic; 
    cond.Interior.TintAndShade = 0; 
    cond.Interior.Color = ColorTranslator.ToWin32(Color.White); 
    cond.StopIfTrue = false; 
+0

注重写:`ColorTranslator`需要使用`System.Drawing` – 2018-01-21 02:29:50