Tutorial: Bedingte Formatierung in Microsoft Excel mit .NET programmatisch erstellen

17.04.2015

Bedingte Formatierung in Excel mit .NET via C#Microsoft Office Excel bietet vielfältige Unterstützung für die bedingte Formatierung. Diese kann auf einen oder mehrere Zellbereiche – basierend auf ihren Zell- oder Formelwerten – angewendet werden. Bei doubleSlash wird diese Funktionalität hauptsächlich bei Abweichungen von Aufwandsschätzungen bzw. bei Controllinginstrumenten im Projektmanagement verwendet. Somit ist leicht einsehbar, ob für Kosten, Budget oder eine Timeline bestimmte Schwellwerte unter- oder überschritten werden.

Aber auch bei der Analyse von Logfiles ist die bedingte Formatierung sehr hilfreich. Nach Export der Logdaten in eine Excel-Datei ermöglicht die farbliche Markierung von Ausreißern einen viel schnelleren Überblick, anstatt die Datensätze im Detail betrachten zu müssen. .NET kann hierbei unterstützen.

Automatisiertes Parsen von Logfiles durch .NET

Das automatisierte Parsen von Logfiles, gepaart mit der bedingten Formatierung für die Excel-Ausgabedatei, kann mit einem .NET-Programm bewerkstelligt werden.
Dieses Tutorial soll einen Überblick darüber geben, wie die bedingte Formatierung programmatisch mithilfe der Programmiersprache C# ab Excel 2010 umgesetzt werden kann.

Um die bedingte Formatierung verwenden zu können, muss die Referenz ‚Microsoft.Office.Interop.Excel‘ in das Projekt miteingebunden werden.

Excel_Referenz

 

Somit erhalten wir Zugriff auf die Excel-Schnittstelle und können benötigte Testdaten anlegen:

[code] excelApplication = new Application();
newWorkbook = excelApplication.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
targetSheet = (Worksheet)(newWorkbook.Worksheets[1]);
targetSheet.Name = "Conditional Formatting";
targetSheet.get_Range("A1",
TYPE).set_Value(XlRangeValueDataType.xlRangeValueDefault, 1);
[/code]

 

Im vorliegenden Beispiel wird die bedingte Formatierung auf die Zellbereiche „A1“ bis „A10“ angewendet, indem wir zunächst den Typ der Formatierung definieren.

 

[code]IconSetCondition iconSetCondition = targetSheet.get_Range("A1:A10").FormatConditions.AddIconSetCondition();[/code]

 

Nun erhalten wir Zugriff auf die Symbolsätze von Excel und entscheiden uns für die „Traffic Lights“ (xl3TrafficLights1), für die uns drei verschiedene Farben (rot, gelb und grün) zur Verfügung stehen:

 

[code]iconSetCondition.IconSet = newWorkbook.IconSets[XlIconSet.xl3TrafficLights1];[/code]

 

Für die einzelnen Farben werden anschließend folgende Eigenschaften definiert:

  • der Typ der Bedingung (in unserem Fall eine einfache Zahl)
  • der Schwellwert
  • der Operator, mit diesem die Schwellwerte abgegrenzt werden

Für das gelbe Symbol ergibt sich somit folgender Code:

 

[code] var yellowIcon = iconSetCondition.IconCriteria[2];

yellowIcon.Type = XlConditionValueTypes.xlConditionValueNumber;

yellowIcon.Value = 4;

yellowIcon.Operator = (int)XlFormatConditionOperator.xlGreaterEqual;
[/code]

 

Wichtig ist hierbei zu beachten, dass niemals das erste Element der Bedingung (in unserem Fall das rote Symbol) modifiziert werden kann. Die Zählung des Arrays fängt hier jedoch nicht wie ggf. erwartet bei 0 sondern bei 1 an.

In der erstellten Ausgabe-Datei können wir diese Konfiguration einsehen, indem die Formatierungsregeln unter „Start“-> „Bedingte Formatierung“ -> „Regeln veralten“ geöffnet werden. Durch einen Doppelklick auf die Regel sind die definierten Schwellwerte samt Operatoren für die einzelnen Farbsymbole ersichtlich:

 

Regel_Formatierung

.NET: Umsetzung der bedingten Formatierung in Microsoft Excel mit C# zum Download

MSExcelConditionalFormatting

 


Quellen:
https://msdn.microsoft.com/en-us/library/bb404903%28v=office.12%29.aspx

 

doubleSlash-Teaser-Blog_Programmierung

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*