2009-06-09 12 views
4

Ich habe gerade die folgende Seite entdeckt: Setting Conditional Formatting in Excel 2007 das ist sehr ähnlich zu etwas, das ich gerne tun würde, aber ich kann nicht scheinen, passende Funktionen zu finden, etwas etwas anderes zu tun.Excel Interop Bedingte Formatierung

Ich frage mich, ob jemand eine Möglichkeit, bedingte Formatierung auf einen Bereich basierend auf einer Reihe von Textwerten anwenden kann. Z.B. Ich möchte sagen:

Wenn „InvalidValue1“ OR „InvalidValue2“ RED Highlight sonst, wenn Sie „Warnung“ YELLOW Highlight

ich eine ganze Reihe von ungültigen Werten haben und möglicherweise Werte zu warnen. Ich muss dies auch spaltenweise für sehr große Datensätze tun, daher möchte ich, wenn möglich, eingebaute Excel-Funktionen verwenden, um Fehler innerhalb des Bereichs hervorzuheben.

Weiß jemand, ob das überhaupt möglich ist?

Grüße

Antwort

5

Ich glaube, ich habe es geschafft, eine Lösung für das Problem zu finden (obwohl Zellenauswahl eher bizarr ist, und ich habe nicht ganz so noch aussortiert werden. ZB meine Formel verwendet A1, die C1 bedeutet eigentlich wegen der ausgewählte Bereich). Hier

ist der Code, den ich für jedermann benutzt sonst interessiert:

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; 

Beachten Sie, dass die FormatConditions.Add() -Methode eine andere Signatur für verschiedene Versionen der Excel-Interop hat.

1

Wenn Sie mit .NET 4, wird die folgende Rewrite Dynamik und benannte Parameter

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

Hinweis verwendet: 'ColorTranslator' erfordert' mit System.Drawing' –

Verwandte Themen