|
|
Mit ODBC auf Excel-Tabellen- #3680 in section [119387] |
Sec: |
(25) MS-Visual FoxPro 8.0 |
Von: |
Hans-Peter Grözinger |
An: |
Heiko Zimmer |
Am/Um: |
20.09.2004 13:06:02 gelesen |
Hallo Heiko ! |
| Heißt denn das auch, daß in _einer_ Spalte eine unterschiedliche Anzahl von Nachkommastellen vorkommen?
| ja, so isses.
| Wie sollte sich dann die DBF-Tabelle verhalten? So viele Nachkomma-Stellen speichern wie die Zeile/n mit dem meisten Nachkomma-Stellen? |
| Andere Möglichkeit: Speicher in Excel doch mal die Daten als DBF ab, vielleicht funktioniert das viel besser (geht natürlich auch per OLE).
| In eine DBF speichern, wäre auch noch eine Möglichkeit, aber mein Auftraggeber verlangt das Einlesen ohne Umwege und ohne Konvertierung in andere Datenformate. Wie meinst Du das mit OLE ?
| Du öffnest die Excel-Tabelle per OLE-Automation in Excel und speicherts diese nach zb. dBASE IV ab. PROCEDURE IMPORTXLS ******************* *-- Instanz von Excel erzeugen und keine Warnmeldungen anzeigen oExcel = CREATEOBJECT( "Excel.Application" ) oExcel.DisplayAlerts = .F. *-- Pfad setzen und ins Importverzeichnis wechseln lcPath = 'C:\TMP' CD &lcPath *-- Alle Excel-Tabellen in diesem Verzeichnis bestimmen lnFiles = ADIR( laFiles, "*.XLS" ) *-- Schleife über alle gefundenen Dateien FOR lnCount = 1 TO lnFiles *-- Meldung anzeigen und Excel-Tabelle in DBF-Tabelle umwandeln SET MESSAGE TO "Datei " + laFiles[lnCount, 1] + " (" + ALLTRIM( STR( lnCount ) ) + " von " + ALLTRIM( STR( lnFiles ) ) + ") wird als DBF gespeichert" lcDBFFileName = XLS2DBF( laFiles[lnCount, 1], lcPath ) ENDFOR *-- Excel schließen und Objekt wieder freigeben oXLS = oExcel.QUIT() RELEASE oExcel *-- Meldung löschen SET MESSAGE TO RETURN FUNCTION XLS2DBF **************** PARAMETERS tcXLSFileName, tcPath LOCAL lcDBFFileName, oXLS *-- Dateinamen für DBF-Tabelle erzeugen lcDBFFileName = STRTRAN( tcXLSFileName, ".XLS", ".DBF" ) *-- Vorhandene Tabelle öffnen oExcel.Workbooks.OPEN( tcPath + "\" + tcXLSFileName ) *-- Zelle A1 aktivieren, damit die komplette Datei als DBF gespeichert werden kann. oExcel.RANGE("A1").SELECT *-- Tabelle speichern im DBF-Format (FileFormat = 11) *-- SaveAs(Filename, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AddToMru, TextCodePage, TextVisualLayout) oXLS = oExcel.ActiveWorkbook.SAVEAS( tcPath + "\" + lcDBFFileName, 11 ) *-- Alle Tabellen wieder schließen oXLS = oExcel.Workbooks.CLOSE *-- DBF-Dateinamen zurück RETURN( lcDBFFileName ) -- Hans-Peter
|
|
|
|