CiAgICA8IS0tIExpbmtlZEluIC0tPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIF9saW5rZWRpbl9wYXJ0bmVyX2lkID0gIjEyMzUwNzMiOwogICAgICAgIHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyA9IHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyB8fCBbXTsKICAgICAgICB3aW5kb3cuX2xpbmtlZGluX2RhdGFfcGFydG5lcl9pZHMucHVzaChfbGlua2VkaW5fcGFydG5lcl9pZCk7CiAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgKGZ1bmN0aW9uKCl7dmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07CiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAgIGIudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiO2IuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICBiLnNyYyA9ICJodHRwczovL3NuYXAubGljZG4uY29tL2xpLmxtcy1hbmFseXRpY3MvaW5zaWdodC5taW4uanMiOwogICAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsIHMpO30pKCk7CiAgICA8L3NjcmlwdD4KICAgIDxub3NjcmlwdD4KICAgICAgICA8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBhbHQ9IiIgc3JjPSJodHRwczovL3B4LmFkcy5saW5rZWRpbi5jb20vY29sbGVjdC8/cGlkPTEyMzUwNzMmZm10PWdpZiIgLz4KICAgIDwvbm9zY3JpcHQ+CiAgICA8IS0tIEVuZCBMaW5rZWRJbiAtLT4KICAgIA==
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

Konvertierung von Excel-Kreuztabellen II

Die hier im Blogbeitrag schon zuvor beschriebene und in der Praxis eminent nützliche, automatisierte Konvertierung von Excel-Kreuztabellen, lässt sich auch per SSIS Aufruf wiederkehrend und ferngesteuert initialisieren und gewinnt somit noch zusätzlich an Flexibilität und Einsatzmöglichkeiten. Welche Einstellungen und Vorkehrungen hierfür getroffen werden müssen, wird im Folgenden dargestellt.

Nehmen wir also an, wir haben eine zu importierende Quelldatei wie diese, deren Umwandlung zu einer flachen Struktur im Cross Table Converter parametriert (im folgenden CTC) und als gespeichertes Konfigurationsfile mit der Endung *.ccc vorliegt.

Nun benötigen wir ein VB Skript, welches uns den Aufruf und die Fernsteuerung des CTCs ermöglicht.

Dieses Skript könnte wie folgt aussehen:

Dim xlApp
set xlApp = Createobject("Excel.Application")
xlApp.Visible = false
xlApp.DisplayAlerts = False
xlApp.EnableEvents = False
xlApp.Workbooks.Open "C:\Import\CrossTableConverter.xls",0,false,,"x"
xlApp.Run "DoTransform"
xlApp.Quit
set xlApp = nothing

Für den Parameter xlApp.Workbooks.Open benötigen wir eine Datei/Version des CTC, auf welche zugegriffen werden kann. Nun gibt es zwei Möglichkeiten, wie wir die gespeicherten Konfigurationsparameter abrufen und verwenden können.

  • Aufruf eines festgesetzten Speicherzustandes
  • Aufruf per Konfigurationsload

Zum einen kann eine Version des CTC mit befüllten, blau hinterlegten Konfigurationsparametern gespeichert und zur Laufzeit dann verwendet werden. Ein wenig aufwendiger gestaltet sich der Aufruf über die programminterne Ladelogik von Konfigurationsdateien (*.ccc).

Hierbei ist eine geringfügige Anpassung im Quellcode des exzellenten Tabellenkonvertierers notwendig.

Da für den SSIS-Einbau in eine täglich laufende Laderoutine eine immer wiederkehrende Umwandlung von Quelldateien in flache Listen mit immer gleichen Transformationsparametern durchgeführt werden soll, kann in der Laderoutine des CTC ein fester Pfad zu einem zuvor erstellten Konfigurationsfile verankert werden.

Dies geschieht in dem internen Modul ‘Sub LoadConfig’, welches die Variable strFileName bereitstellt.

In unserem Testfall kann diese fest mit dem Pfad zu der Parameterbibliothek befüllt werden:

strFileName = “C:\Import\xls_config.ccc”

Das Skript als steuerndes Organ des SSIS Paketes muss dann noch um den Aufruf der Ladelogik ergänzt werden.

xlApp.Run ” LoadConfig”

Hat man sich für den jeweils gangbaren Weg entschieden, so speichern wir unser Skript im Editor mit einem später ausführbaren Namen wie „Import.vbs“, oder bauen das Skript direkt als Skripttask in die SSIS Struktur ein. Dies hat den Vorteil, dass später keine betriebssystemspezifischen Rechteprobleme auftreten können.

Ist man jedoch auf eine externe .vbs Datei angewiesen, so empfiehlt sich unter Windows die Sichtung der lokalen Gruppenrichtlinien (gpsedit.msc) und des darin enthaltenen Anlagen-Managers, ob die Ausführung von Dateien der Endung .vbs genehmigt ist.

Diese Importdatei können wir dann im SSIS Paket über den Ausführungspunkt Task „Prozess ausführen“ anbinden.

Für den Eigentlichen Ladevorgang im SSIS Paket ist dann das Resultat der Konvertierungsroutine zu wählen. Jedem täglichen Import wird somit eine Konvertierungslogik vorangestellt.

Am Ende steht eine beliebig oft wiederholbare und voll automatisierte Verwendung der Konvertierungslogik.