PowerShell Script zum Konvertieren von .XLS-Dateien in .XLSX-Dateien

Eines Vorweg: Ich bin kein Freund davon alle alten Excel-Dateien auf Gedeih und Verderb in das “neue” OpenXML-Format zu konvertieren. Das alte binäre Format ist in den allermeisten Fälle noch gut genug, deshalb sollte von Datei zu Datei entschieden werden, ob sich eine Konvertierung auszahlt.

Mir fallen auf die Schnelle vier Gründe ein, wofür sich eine Konvertierung lohnt:

  • Es sollen die neuen Features von Excel verwendet werden. Dies ist schlicht und einfach nur mit dem neuen Dokumentformat möglich.
  • Es muss Speicherplatz gespart werden (das neue Format ist teilweise um die Hälfte platzsparender als das alte Binärformat).
  • Ein oder mehrere Dokumente sollen automatisiert werden. Diese Aufgabe ist über das OpenXML-SDK möglich, ohne dass das Office Paket installiert ist. Dies ist vor allem auf einem Server (z.B. SharePoint, Office 365) wichtig, da dort eine Installation des Office Paketes tunlichst vermieden werden sollte.
  • Es sollen die neuen Funktionen zur Gruppenzusammenarbeit genutzt werden, sodass mehrere Benutzer auf ein und dasselbe Excel-Dokument zugreifen können und dort Änderungen vornehmen (dies setzt einen SharePoint 2010 Server oder Office 365 voraus).

Da eine Konvertierung alter Dokumente nicht immer eine Entscheidung einer einzelnen Person ist und dafür nicht immer ein Praktikant zur Verfügung steht, der einem diese Aufgabe abnimmt (alte Datei aufmachen, Datei als .XLSX oder, falls ein Macro enthalten, als .XLSM abspeichern) habe ich ein PowerShell-Script geschrieben, welches diese Aufgabe erleichtert.

Beispiel 1

Direktes Konvertieren von Bericht.xls nach Bericht.xlsx:

.Convert-Xls2Xlsx.ps1 Bericht.xls Bericht.xlsx

Beispiel 2

Konvertiert mehrere Excel-Dateien in einem Ordner mit Unterordnern:

PS> ls D:ExcelFolder -Recurse -Include *.xls |
>> .Convert-Xls2Xlsx.ps1 -AutoConvert

Beispiel 2 konvertiert – bei vorhandenem AutoConvert-Parameter und dem Vorhandensein von Makros – die Datei automatisch in ein “macro enabled” OpendXML (Endung .XLSM). Die konvertierten Excel-Dateien werden in demselben Ordner wie die alten Excel-Dateien abgespeichert. Falls dies nicht gewünscht ist, kann auch ein -DestinationFolder angegeben werden.

Falls eine Datei mit demselben Namen vorhanden ist, kann man mit dem Parameter -Force das Überschreiben der Datei erzwingen.

Der Script-Code befindet sich auf bitbucket.org.

Tagged , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: