Mit der Powershell eine Exceltabelle bauen

Mit der Powershell sind so ziemlich viele fiese Dinge realisierbar. Unter anderem auch das komplette erzeugen umfangreicher Exceldokumente. Einfach immer nur alles in eine CSV Datei schreiben war gestern. Wir nutzen Excel im vollen Umfang und machen die Tabellen auch noch hübsch.

Zunächst sei mir aber folgender Hinweis gestattet. Das ganze funktioniert natürlich nur wenn Excel auch tatsächlich auf dem System installiert ist. Im Hinblick auf die Weiterführung dieses Beitrages zur Verwendung mit VMWare werden einige Namen und Bezeichner auch schon VMWare relevante Daten beinhalten.  Bitte einfach davon nicht irritieren lassen.
Einige Begrifflichkeiten sollten auch gleich noch direkt am Anfang geklärt werden.
Auch wenn es nicht meine Art ist mit englischen Begriffen um mich zu schmeißen werde ich dies in diesem Beitrag der Einfachheit halber, tun.

Es gibt in Excel einmal eine einzelne Tabelle, auch als Excelsheet bezeichnet. dies ist schlicht und ergreifend ein einzelnes Arbeitsblatt. Mehrere Arbeitsblätter bzw. Sheets sind dann das sogenannte Workbook. Hiermit ist dann die Exceldatei gemeint die ja mehrere Sheets beinhalten kann.

In der Powershell wird nun folgendermaßen vorgegangen. Zunächst einmal muss ich mir ein Excel-Object erzeugen. Diesem Excel-Object füge ich dann ein Workbook hinzu. Jedes Workbook hat bei der Erzeugung bereits 3 Worksheets. Nachvollziehbar ist dies ganz einfach in dem man einmal Excel öffnet und ein neues Dokument erstellt. Dann befinden sich in dem Dokument bereits 3 Arbeitsblätter. Das ganze passiert so natürlich auch per Powershell.

Wir benötigen für unser Beispiel bzw. für unser VMWare Projekt 7 Arbeitsblätter. 3 Arbeitsblätter werden bereits bei der Erzeugung des Workbooks angelegt und wir müssen noch 4 weitere hinzufügen.

$excel = New-Object -ComObject excel.Application
$excel.visible = $False
$wrkBook = $excel.Workbooks.add()

$newWrkSheet = $wrkBook.Worksheets.add()
$newWrkSheet = $wrkBook.Worksheets.add()
$newWrkSheet = $wrkBook.Worksheets.add()
$newWrkSheet = $wrkBook.Worksheets.add()

Die Vorgehensweise sollte ersichtlich sein. Lediglich in Zeile 2 habe ich noch Visible-Eigenschaft auf FALSE gesetzt. Ich finde es einfach praktischer kein Excelfenster zu sehen während meine Scripte laufen. Standard ist im übrigen diese Eigenschaft TRUE.