Home
Datenquellen
Controllflow
DataFlow
SSIS
ToC
Impressum
 
Der Excel Connection Manager
 
Excel ist eine der wichtigsten Datenbanken, die in den Betrieben eingesetzt werden. In jedem Betrieb gibt es Informationen, die ausschließlich in Excel gehalten werden. Deshalb kommt es immer wieder vor, dass Daten die in Exceltabellen gespeichert sind in den ETL Prozess einbezogen werden müssen.
 
Genau aus diesem Grund gibt es den Excel Verbindungsmanger (Connection Manager). Die Bedingung ist denkbar einfach:
  • Eingabe des Pfades zur Excel Datei
  • Auswahl der Excel Version mit der diese Datei erstellt wurde
  • Festlegen, ob in der ersten Zeile die Spaltennamen hinterlegt sind
Folgende Excelversionen werden unterstützt:
  • Excel 3.0
  • Excel 4.0
  • Excel 5.0
  • Excel 97 bis 2003
Der Excel Verbindungsmanager verwendet den OLE DB Provider für Jet 4.0. Zusätzliche Informationen zu diesem Treiber finden Sie unter Microsoft Jet 4.0 Provider Properties
 
Die Datenquelle ist immer ein Arbeitsblatt (Schreibweise: Sheet1$).

Genauso ist es möglich einen benannten Bereich anzugeben; hier wird nur der Name des benannten Bereiches ohne Zusätze verwendet.

Auch das festlegen eines Ausschnittes innerhalb eines Excelarbeitsblattes ist mit der Schreibweise Sheet1$A1:B10 möglich.

Bei der Verwendung dieser Schreibweisen muss bei der Verwendung einer SQL Select Anweisung der Ausdruck in eckigen Klammern (zum Beispiel [Sheet1$] oder [Sheet1$A1:B30]) geschrieben werden.
 
Bitte achten Sie darauf, wenn die Excelmappe mit einem deutschen Excel erstellt wurde, heißt die Bezeichnung für ein Arbeitsblatt nicht Sheet sondern Tabelle.

Bei der ersten leeren Zeile im Datenbereich wird die Verarbeitung beendet. Deshalb dürfen zwischen den Spaltenköpfen und den Daten keine Leerzeilen vorhanden sein.

Der Excel Treiber unterstützt ausschließlich folgende Datentypen:
DatentypSSIS Datentype
NumericGleitkommawert mit doppelter Genauigkeit (DT_R8)
WährungCurreny (DT_CY)
BooleanBoolean (DT_BOOL)
Datum/ZeitDatum (DT_DATE)
StringUnicode string, Länge 255 (DT_WSTR)
MemoUnicode Text Stream (DT_NTEXT)

Standardmäßig liest der Exceltreiber die ersten acht Zeilen und stellt so den Datentyp fest. Diese Einstellung kann nur durch einen Eintrag in der Registry geändert werden. Entsprechende Informationen finden Sie in englisch hier. Die automatische Übersetzung des Artikels in deutsch ist leider kaum zu gebrauchen.

Wenn in eine Spalte gemischte Datentypen beinhalten, so kann der Excel Verbindungsmanger nicht verwendet werden. In diesem Fall muss der OLE DB Verbindungsmanger verwendet werden. Der entsprechende Connection String sieht wie folgt aus:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Mappe1.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"

HDR=Yes - deutet, dass in der ersten Zeile die Spaltenüberschriften stehen; sind keine Spaltenüberschriften vorhanden so wird No angegeben
IMEX=1 - bedeutet, dass alle Spalten im Textformat, sprich in einen Unicodestring mit der Länge von 255, eingelesen werden

Zusätzliche Informationen finden Sie hier.

 

Excel 2007

Falls Sie bereits mit Excel 2007 arbeiten können Sie nicht die Excel Datenquelle oder das Excel Datenziel von SSIS verwenden.
Das trifft auch dann zu, wenn Sie das Service Pack 2 für den  SQL Server 2005 eingespielt haben.

Hier bleibt nur die Möglichkeit, einen OLE DB Verbindungsmanager zu verwenden. Der Connection String sieht wie folgt aus:

Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=2";

Damit ist es dann möglich aus und nach Excel 2007 bis zu 1 Million Zeilen zu verarbeiten. Die bisherigen Einschränkungen und Fallstricke bleiben erhalten.

Bitte achten Sie darauf, dass auf jeder Maschine, auf der das entsprechende SSIS Paket ausgeführt wird, dieser OLE DB Treiber installiert ist. Hier können Sie den Treiber herunterladen.

 

Excelmappen können ausschließlich im 32-Bit Modus verarbeitet werden, da der Treiber nur das 32-Bit Betriebssystem zur Verfügung steht.

 

Tipp:

Wenn der Name der Excelmappe variabel gehalten werden soll oder von außen konfiguriert wird, so muss die Eigenschaft ExcelFilePath im Excel Connection Manager angepasst werden. Diese Eigenschaft kann auch mit einer Expression überschrieben werden.

Letzte Änderung 4.3.2007