23. Modul XLSIN - MS EXCEL lesen

23.1. Allgemeines

Mit dem Skriptmodul können Objekte aus einer Excel File gelesen werden.

Der Modul wird mit:

|INCL \script\xlsin.mod

in einer ICS RUN1-Konfiguration verfügbar gemacht.

23.2. Abhängigkeiten von anderen Modulen

Der Modul importiert die Klasse DB. Es stehen daher auch alle Methoden der Klasse DB zur Verfügung (s.a. iG/Script Benutzer- und Referenzhandbuch).

23.3. Parametermap DB_PARAM

Folgende Parameter können in der Map DB_PARAM gesetzt werden:

Parameterreq/optBeschreibung
TRACEoON oder OFF, Default = OFF. Für jedes gelesene Objekt eine Zeile ausgeben.

23.4. Parametermap DBIN_PARAM

Folgende Parameter können in der Map DBIN_PARAM für den Modul gesetzt werden:

Parameterreq/optBeschreibung
STATISTICSoON oder OFF, Default = OFF. Statistik anzeigen.
SELECT_PARSEoON oder OFF, Default = ON. Definiert, ob ein eventuelles SQL-select Statement geparst werden soll. Als Argument für für das Modul kann ein SQL-select Statement definiert werden. Als Default wird dieses select-Statement von geparst , um spezielle Attribute zu erkennen, die vom ODBC-Treiber nicht unterstützt werden und speziell gelesen werden müssen. Manchmal können select-Statements (komplexe Joins) nicht erfolgreich geparst werden. In solchen Fällen ist dieser Parameter auf OFF zu schalten. Sie müssen besorgt sein, dass das select-Statement von ODBC verarbeitet werden kann.

23.5. Parametermap XLSIN_PARAM

In dieser Parameter Map sind zur Zeit keine Parameter definierbar.

Parameterreq/optBeschreibung

23.6. Objektmodell

Der Modul liefert pro IN-Objekt folgende Systemkomponenten:

Komponentereq/optBeschreibung
IN.TABLE(s)rTablename des IN Objekts.
IN.ROW(i)rZeile des IN Objekts.

Alle weiteren Komponenten sind abhängig von der Tabellen-Definition in der Datenbank.

23.7. EXCEL Tabelle vorbereiten

Tabelle gesamthaft lesen

Wenn der Modul eine Excel-Tabelle vollständig lesen soll, muss die Excel-Tabelle nach EXCEL-ODBC-Konvention wie folgt angesprochen werden:

[<table>$]

Beispiel:

MAP INPUT_SOURCES
   I1 => XLSIN,[Tabelle1$]
END_MAP

Tabelle tabellarisch lesen

Damit der Modul Daten tabellarisch - Teile einer Tabelle - aus einer Excel-Tabelle lesen kann, ist die Excel Tabelle wie folgt unter Excel vorzubereiten.

Abbildung A.1.

Spaltennamen

In der ersten Zeile sind die Spaltennamen einzutragen.

Tabellennamen

Die zu exportierenden Spalten sind zu markieren.

Über Einfügen > Namen > Festlegen ist dem markierten Bereich ein Namen zu vergeben.

Der markierte Bereiche wird über diesen Namen vom Modul XLSIN angesprochen.

z.B.

MAP INPUT_SOURCES
   I1 => XLSIN,Einwohner
END_MAP

23.8. Datenbankmodell

Die Methode DB.GET_INFO liefert das Datenmodell der Datenbank in einer Objektstruktur. Auf die einzelnen Komponenten dieser Objektstruktur kann zugegriffen werden.

Anwendung der Methode DB.GET_INFO:

MAP DB_MODEL
END_MAP

&DB_MODEL DB.GET_INFO

Objektstruktur Datenmodell:

DB_MODEL (m)
   DB_NAME     -> (s) <Name>
   DB_USER     -> (s) <DB-User>
   DB_PASSWORD -> (s) <DB-Password>
   PRODUKT     -> (s) <Produkt>
   VERSION     -> (s) <Version>
   TABLES      -> (m)
      : 
      <Tablename> -> (m)
         TABLENAME      -> (s) <Tablename>
         TABLEQUALIFIER -> (s) <Tabelqualifier>
         TABLEOWNER     -> (s) <Tableowner>
         TABLETYPE      -> (s) <Tabletype>
         COLUMNS        -> (m)
            : 
            <Columnname> -> (m)
               NAME       -> (s) <Name>
               TYPENAME   -> (s) <Typename>
               DATATYPE   -> (i) <Datatype>
               LENGTH     -> (i) <Length>
               PRECISION  -> (i) <Precision>
               SCALE      -> (i) <Scale>
               RADIX      -> (i) <Radix>
               NULLABLE   -> (b) <Nullable>
               REMARKS    -> (s) <Remarks>

Zugriffsbeispiele Objektstruktur Datenmodell:

! Display User,Product,Version
DISPLAY DB_MODEL

! Display Tables
DISPLAY DB_MODEL.TABLES

! Display Table Category
DISPLAY DB_MODEL.TABLES.CATEGORY

! Display Columns of Table Category
DISPLAY DB_MODEL.TABLES.CATEGORY.COLUMNS

! Display Column MSLINK of Table Category
DISPLAY DB_MODEL.TABLES.CATEGORY.COLUMNS.MSLINK

! Display Typename of Column MSLINK of Table Category
DISPLAY DB_MODEL.TABLES.CATEGORY.COLUMNS.MSLINK.TYPENAME

23.9. Exportierte Prozeduren und Methoden

ProzedurXLSIN_OPEN [s input][]
Beschreibung

Öffnet ein Excel Tabelle. Für <input> können folgende Werte verwendet werden.

*

Liest alle Tabellen der Datenbank.

<tablename>

Liest die Records der Tabelle <tablename>.

<tablename>,<sql-select-statement>

Liest die Records der Tabelle <tablename> entsprechend dem SQL-select-Statement. Beinhaltet das SQL-select-Statement Hochkommas für Strings so sind die Hochkommas ' durch Anführungszeichen " zu ersetzen.

Die Prozedur wird von RUN1 automatisch aufgerufen.

Beispiel
'CATEGORY,select * from CATEGORY where CNAME like "av%"' XLSIN_OPEN
 
MAP INPUT_SOURCES
   I1 => XLSIN,CATEGORY,'select * from CATEGORY where CNAME like "av%"'
END_MAP
ProzedurXLSIN_READ_OBJECT [][b state]
Beschreibung

Liest das nächste IN-Objekt aus der geöffneten Excel-Tabelle. Die Prozedur wird von RUN1 automatisch aufgerufen.

Beispiel
XLSIN_READ_OBJECT [TRUE]
ProzedurXLSIN_CLOSE [][]
BeschreibungSchliesst den Modul und gibt die durch den Modul belegten Resourcen wieder frei. Die Prozedur wird von RUN1 automatisch aufgerufen.
Beispiel
XLSIN_CLOSE

23.10. Skriptbeispiel

! Diese ICS Konfiguration zeigt alle von XLSIN
! gelesenen Objekte in der .log Datei an.

|LICENSE \license\iltools.lic

MAP USER_INPUT1
   DIALOG        => FILE
   MESSAGE       => 'Enter Excel Input File'
   FILE_FILTER   => xls
   FILE_EXISTS   => TRUE
   OPT           => input
END_MAP

MAP DB_PARAM
END_MAP

MAP DBIN_PARAM
   STATISTICS     => ON
END_MAP

MAP XLSIN_PARAM
END_MAP

MAP INPUT_SOURCES
   I1 => XLSIN,*
END_MAP

MAP INOUT
   I1 => DISPLAY_OBJECT1,IN
END_MAP

|INCL \script\xlsin.mod
|INCL \script\run1.prg