Indexdatenleser "MsExcel"
Der Indexdatenleser "MsExcel" dient der Extraktion von Inhalten aus einer Dateianlage vom Typ "Microsoft Excel-Mappe". Für die Eigenschaft .InputName gilt eine spezielle Syntax in Form eines Wertes, der aus mehreren Parametern zusammengesetzt ist. Dieser Wert definiert das auszulesende Element.
Der erste Parameter trägt immer den Namen ElemType und benennt die Art des Elements. Abhängig von der Elementart sind teils weitere Parameter verfügbar, um das Element zu spezifizieren.
Element | Parameter |
|---|---|
Gesamte Arbeitsmappe |
|
Anzahl Arbeitsblätter |
|
Arbeitsblatt |
|
Zelle oder Zellenbereich |
|
Textbox |
|
Mappeneigenschaft |
|
Ein vollständiger Wert der Eigenschaft .InputName zum Auslesen eines Bereiches aus dem ersten Arbeitsblatt kann z. B. wie folgt aussehen:
ElemType: Range, SheetNo: 1, StartCell: A1, EndCell: C3
In verkürzter Form, ohne Parameternamen, sieht der Wert wie folgt aus:
Range, 1, , A1, C3
Die Parameter SheetNo / SheetName sowie BoxNo / BoxName sind alternativ zu verwenden, da die betreffenden Elemente entweder über ihre Nummer (beginnend bei 1) oder ihren Namen identifiziert werden können.
Eine Zelle in StartCell und EndCell kann nicht nur absolut, sondern auch relativ adressiert werden. Diese Adressierung erfolgt über eine Suchzeichenfolge, die in dem Textwert einer Zelle enthalten ist. Die Syntax hierfür ist {Suchtext}[+|-]{Spaltenversatz}[+|-]{Zeilenversatz}.
Über den Ausdruck Rechnungsdatum+1+0 kann beispielsweise nach der ersten Zelle mit dem Wert oder Teilwert "Rechnungsdatum" gesucht werden. Die gewünschte Zelle ist die, die in derselben Zeile eine Spalte rechts neben dieser liegt.
Bei einigen Elementarten kann ein Bereich ausgelesen werden, der mehrere Zellen umfasst:
Range: Der Bereich ist explizit definiert.Worksheet: Der Bereich umfasst implizit alle Zeilen des betreffenden Arbeitsblattes.Workbook: Der Bereich umfasst die Zellen aller Arbeitsblätter.
Wenn der ausgelesene Wert mehrere Zellen einschließt, wird dem Zielfeld ein Array der Einzelwerte pro Zelle übergeben, sofern die Eigenschaft ProcessReadIndex[].ReadMultiValues aktiviert ist. Leere Zellenwerte werden dabei automatisch herausgefiltert. Im Fall eines Kopfdatenfeldes geht in dem eindimensionalen Array die ursprüngliche Zeilen-/Spaltenstruktur der Werte verloren.
Wenn die Zielfelder Teil einer Tabelle sind, wird über jede Zeile des extrahierten Zellenbereiches eine Tabellenzeile generiert. Da ein Bereich jeweils einem einzelnen Zielfeld zugeordnet ist, sollte der Bereich nur eine Spalte umfassen. Anderenfalls werden dem Zielfeld wiederum die Werte mehrerer Spalten als Array zugewiesen.