Sie sind nicht angemeldet.

Roland

Roland Wingerter

  • »Roland« ist ein verifizierter Benutzer

Beiträge: 9

Wohnort: Nürnberg

Level: 20 [?]

Erfahrungspunkte: 27 103

Nächstes Level: 29 658

  • Nachricht senden

1

Dienstag, 6. Mai 2008, 17:29

Import und Export von Daten mit den MS Text und Excel-Treibern

Bei meinem Beitrag ging es um den Import und Export von Daten mit dem MS
Text-Treiber und dem MS Excel-Treiber. Beide Treiber funktionieren
ausgezeichnet mit dBASE, wenn man weiß, was man beachten muss.

Das Ganze funktioniert über ODBC. Also muss man zuerst einen ODBC DSN
einrichten, entweder manuell im ODBC Administrator oder mit
:dUFLP:createODBC.prg.

Arbeiten mit dem Excel-Treiber

Für das Lesen und Schreiben von Excel-Tabellen wird in der dBASE
Newsgroup meist OLE empfohlen. Auch Ken Mayer's exportdata.wfm verwendet
OLE.

Es ist erstaunlich, dass niemand darauf gekommen ist, den MS Excel-
Treiber zu verwenden, obwohl dieser frei verfügbar und auf den meisten
Rechnern bereits vorhanden ist.

Für den Export von dBASE-Tabellen nach Excel geben wir den Pfad an und
den Namen einer Datei, die noch nicht vorhanden ist. Am besten macht man
das mit :dUFLP:createODBC.prg. Da wir in die Tabelle schreiben wollen
müssen wir die Eigenschaft readOnly = false setzen.

Es wurde ein Beispielprogramm gezeigt (Copydb2Excel.prg), das alle
Tabellen des dBASE Tutorials in eine Excel-Datei kopiert. Alle Tabellen
landen in einer einzigen Excel-Datei. Bestimmte Feldtypen kann man nicht
nach Excel kopieren, z.B. Binärfelder oder Grafiken (z.B. das Feld Image
in :dbasesamples:fish.dbf). Im dBASE-Regiezentrum sieht man die einzelnen
Tabellen und kann sie öffnen, mit "use <tabelle>" oder "select * from
<tabelle>". Wenn man die so erzeugte Datei in Excel öffnet, sind alle
Daten da, jede als ein eigenes Arbeitsblatt.

Auf eine "fremde" Excel-Datei, die nicht mit dBASE erstellt wurde, kann
man nicht so ohne Weiteres zugreifen. Zuerst müssen wir in Excel selbst
einen Datenbereich definieren und ihm einen Namen geben. Das kann man
auch per Programm erledigen (defineExcelRange.prg). Dieses Programm
funktioniert mit OLE. Im Moment bearbeitet der Code nur das erste
Arbeitsblatt in der Excel-Tabelle, das müsste noch verbessert werden.

Das Lesen und Schreiben von Excel-Tabellen über ODBC ist natürlich viel
schneller als mit OLE.

Arbeiten mit dem MS Text-Treiber

Die sehr nützlichen Befehle COPY TO ... DELIMITED und APPEND FROM <datei>
DELIMITED haben kein Äquivalent in OODML. Und wenn eine Textdatei als
Feldtrenner statt Komma ein anderes Sonderzeichen verwendet, z.B.
Semikolon oder Tab, blieb bisher nur der Low-Level-Zugriff um solche
Dateien zu lesen oder zu schreiben.

Die komfortable Alternative zum Low-Level-Zugriff ist der Microsoft
Text-Treiber. Wer in den englischen Newsgroups mitliest, findet dort eine
Postings zu diesem Thema, u.a. hier: dbase.shared-code, "Using the
Microsoft Text Driver from dBASE", 27.2.2008. Darin u.a. eine Klasse
MSText.cc für das Schreiben von Textdateien mit diversen Feldtrennern.

Für das Lesen von Textdateien muss man ggf. einen Eintrag in der
Schema.ini anlegen. Alles Notwendige dazu kann man nachlesen in
dbase.knowlegebase, "Using the Microsoft Text Driver from dBASE",
2. Dezember 2007.

Als Fazit bleibt festzuhalten, dass diese beiden Treiber für den Export
und Import von Daten sehr nützlich sind und die Möglichkeiten für
dBASE-Entwickler und -Anwender erweitern.

Roland

Thema bewerten