DBF in XLSX konvertieren
Moderator: Moderatoren
DBF in XLSX konvertieren
Hallo allerseits.
Gibt es eine Möglichkeit eine DBF in eine XLSX zu konvertieren?
Ich habe mir auch schon die LIBXL.LIB angeschaut.
Wüsste jetzt nicht so auf Anhieb, wie es damit gehen könnte.
Gibt es da evtl. was einfacheres?
Bin für jeden Tip dankbar.
Vielen Dank.
Gruß Rolf
Gibt es eine Möglichkeit eine DBF in eine XLSX zu konvertieren?
Ich habe mir auch schon die LIBXL.LIB angeschaut.
Wüsste jetzt nicht so auf Anhieb, wie es damit gehen könnte.
Gibt es da evtl. was einfacheres?
Bin für jeden Tip dankbar.
Vielen Dank.
Gruß Rolf
VG Rolf
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2471
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 103 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: DBF in XLSX konvertieren
Ja die dbf mit Excel öffnen und dann speichern als Excel Datei.
Gruß
Klaus
Klaus
Re: DBF in XLSX konvertieren
Hi Klaus.
Da finde ich jetzt nichts, wo man eine DBF in Excel importieren kann. ??
SQL etc..., aber kein DBF Format.
Gruß Rolf
Da finde ich jetzt nichts, wo man eine DBF in Excel importieren kann. ??
SQL etc..., aber kein DBF Format.
Gruß Rolf
VG Rolf
- Marcus Herz
- 1000 working lines a day
- Beiträge: 860
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 196 Mal
- Kontaktdaten:
Re: DBF in XLSX konvertieren
Excel hat früher noch DBF unterstüzt, jetzt nicht mehr.
An XLS-ActiveX kann man einem Range ein mehrdimensionales Array übergeben, Der Range musste der Dimension des Arrays entsprechen. Das ist extrem schnell.
Mit LIbXl muss das genauso gehen, habe ich aber noch nicht prbiert.
Die Speichergröße des Arrays darf 64k nicht übersteigen
An XLS-ActiveX kann man einem Range ein mehrdimensionales Array übergeben, Der Range musste der Dimension des Arrays entsprechen. Das ist extrem schnell.
Mit LIbXl muss das genauso gehen, habe ich aber noch nicht prbiert.
Die Speichergröße des Arrays darf 64k nicht übersteigen
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Re: DBF in XLSX konvertieren
Hi Marcus.Marcus Herz hat geschrieben: ↑Mo, 15. Feb 2021 13:17 Excel hat früher noch DBF unterstüzt, jetzt nicht mehr.
An XLS-ActiveX kann man einem Range ein mehrdimensionales Array übergeben, Der Range musste der Dimension des Arrays entsprechen. Das ist extrem schnell.
Mit LIbXl muss das genauso gehen, habe ich aber noch nicht prbiert.
Die Speichergröße des Arrays darf 64k nicht übersteigen
Doch geht immer noch.
Beim " Datei öffnen", den Dateityp ändern.
Gruß Rolf
VG Rolf
Re: DBF in XLSX konvertieren
Man kann in xBase mit folgendem Befehl eine Excel Tabelle öffnen: oWorkBook := oExcel:Workbooks:Open(cExcelDatei)
Gibt es da eine Möglichkeit eine DBF zu öffnen?
Beim Speichern kann ich ja mit einem Parameter auswählen, welche Dateityp gespeichert werden soll.
BSP.: oWorkBook:SaveAs(cTempFilename,6)
Wobei die 6 eine CSV Datei erstellt.
Gruß Rolf
Gibt es da eine Möglichkeit eine DBF zu öffnen?
Beim Speichern kann ich ja mit einem Parameter auswählen, welche Dateityp gespeichert werden soll.
BSP.: oWorkBook:SaveAs(cTempFilename,6)
Wobei die 6 eine CSV Datei erstellt.
Gruß Rolf
VG Rolf
- ingo
- UDF-Programmierer
- Beiträge: 62
- Registriert: Fr, 19. Okt 2007 10:20
- Wohnort: Lüneburg
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: DBF in XLSX konvertieren
Moin Rolf,
ich mache das - vermutlich gewöhnungsbedürftiger Code - aber ich schätze erkennbar wie's geht.
Die entscheidenden Methoden sind angehängt.
Das funktioniert grundsätzlich prima, nur wenn man große Tabellen mit mehreren tausend Zeilen öffnet und dann ein paar tausend Zellen formatiert hängt Excel sich auf und das XBase-Programm bleibt einfach stehen.
Formatierung z.B. mit:
::oSheet:Cells( nZeile, nSpalte ):Interior:ColorIndex := nFarbe
(Ich suche grade, ob ich dagegen etwas tun kann.)
ich mache das - vermutlich gewöhnungsbedürftiger Code - aber ich schätze erkennbar wie's geht.
Die entscheidenden Methoden sind angehängt.
Das funktioniert grundsätzlich prima, nur wenn man große Tabellen mit mehreren tausend Zeilen öffnet und dann ein paar tausend Zellen formatiert hängt Excel sich auf und das XBase-Programm bleibt einfach stehen.
Formatierung z.B. mit:
::oSheet:Cells( nZeile, nSpalte ):Interior:ColorIndex := nFarbe
(Ich suche grade, ob ich dagegen etwas tun kann.)
Schönen Gruß, Ingo
- Marcus Herz
- 1000 working lines a day
- Beiträge: 860
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 196 Mal
- Kontaktdaten:
Re: DBF in XLSX konvertieren
XLS Formatierungen, hatte ich auch meine Problem.
Ich verwende jetzt immer eine Formatierungsbedingung und weis diese einem Range zu. Stabil
in etwa so:
Ich verwende jetzt immer eine Formatierungsbedingung und weis diese einem Range zu. Stabil
in etwa so:
Code: Alles auswählen
oRange := oSheet:range("A2:H99")
// man kann noch eine Bedingung für die Fareb setzen
//oRange :FormatConditions:Add( xlExpression,,'=F2=0' )
oFormat:= oRange:FormatConditions(1):Interior
oFormat :Pattern := xlSolid
oFormat :Color := GraMakeRgbColor( {247,161,137} )
oFormat :TintAndShade := 0
oFormat :PatternTintAndShade := 0
// du kannst mehrere Formatireungen setzen, jeweils für eine Farbe mit Bedingung
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
- ingo
- UDF-Programmierer
- Beiträge: 62
- Registriert: Fr, 19. Okt 2007 10:20
- Wohnort: Lüneburg
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: DBF in XLSX konvertieren
Moin Marcus,
danke für den Tipp!
Da werde ich mal herumprobieren.
danke für den Tipp!
Da werde ich mal herumprobieren.
Schönen Gruß, Ingo
Re: DBF in XLSX konvertieren
Danke dir Ingo.
Das sind aber teilweise 400.000 Zeilen.
Mir würde schon das Öffnen einer DBF unter xBase weiterhelfen.
Gruß Rolf
Das sind aber teilweise 400.000 Zeilen.
Mir würde schon das Öffnen einer DBF unter xBase weiterhelfen.
Gruß Rolf
VG Rolf
- ingo
- UDF-Programmierer
- Beiträge: 62
- Registriert: Fr, 19. Okt 2007 10:20
- Wohnort: Lüneburg
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: DBF in XLSX konvertieren
Moin Rolf,
das Öffnen findest du im Beispielcode - die Probleme treten erst beim Formatieren der Tabelle auf.
Ganz kurz geht's so (ohne das Fehler abfangen):
#define xlWorkbookDefault 51 // Excel Format für Saveas
::oExcel := CreateObject( "Excel.Application" )
::oBook := ::oExcel:workbooks:Open( cExcelDateiName ) // z.B. "C:\TEMP\FILENAME.DBF"
::oSheet := ::oBook:worksheets( 1 ) // setzt die 1. Tabelle aktiv
...und dann kannst du damit arbeiten und zum Schluß speichern:
::oBook:Saveas( "C:\TEMP\FILENAME.xlsx", xlWorkbookDefault ) // <- erzeugt eine .xlsx bei Office 2007 ff.
das Öffnen findest du im Beispielcode - die Probleme treten erst beim Formatieren der Tabelle auf.
Ganz kurz geht's so (ohne das Fehler abfangen):
#define xlWorkbookDefault 51 // Excel Format für Saveas
::oExcel := CreateObject( "Excel.Application" )
::oBook := ::oExcel:workbooks:Open( cExcelDateiName ) // z.B. "C:\TEMP\FILENAME.DBF"
::oSheet := ::oBook:worksheets( 1 ) // setzt die 1. Tabelle aktiv
...und dann kannst du damit arbeiten und zum Schluß speichern:
::oBook:Saveas( "C:\TEMP\FILENAME.xlsx", xlWorkbookDefault ) // <- erzeugt eine .xlsx bei Office 2007 ff.
Schönen Gruß, Ingo
Re: DBF in XLSX konvertieren
Hi Ingo.ingo hat geschrieben: ↑Mo, 15. Feb 2021 14:45 Moin Rolf,
das Öffnen findest du im Beispielcode - die Probleme treten erst beim Formatieren der Tabelle auf.
Ganz kurz geht's so (ohne das Fehler abfangen):
#define xlWorkbookDefault 51 // Excel Format für Saveas
::oExcel := CreateObject( "Excel.Application" )
::oBook := ::oExcel:workbooks:Open( cExcelDateiName ) // z.B. "C:\TEMP\FILENAME.DBF"
::oSheet := ::oBook:worksheets( 1 ) // setzt die 1. Tabelle aktiv
...und dann kannst du damit arbeiten und zum Schluß speichern:
::oBook:Saveas( "C:\TEMP\FILENAME.xlsx", xlWorkbookDefault ) // <- erzeugt eine .xlsx bei Office 2007 ff.
Danke dir.
Genau das brauche ich.
Ich brauche die Excel Tabelle nicht zu bearbeiten, da ich das schon bei der DBF gemacht habe.
Ich werde es sofort testen.
Gruß Rolf
VG Rolf
- ingo
- UDF-Programmierer
- Beiträge: 62
- Registriert: Fr, 19. Okt 2007 10:20
- Wohnort: Lüneburg
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: DBF in XLSX konvertieren @Markus wg. range
Hi Markus,
nochmal danke für den Tipp - haut aber leider auch nicht hin.
Bei der Tabelle mit 130.000 Zeilen, in der ich ca. jede 10.Zeile farblich hinterlegen will klappt's jetzt zwar besser, aber nach ungefähr 80.000 Zeilen bleibt Excel trotzdem hängen.
...nur zur INfo der Vollständigkeit halber.
nochmal danke für den Tipp - haut aber leider auch nicht hin.
Bei der Tabelle mit 130.000 Zeilen, in der ich ca. jede 10.Zeile farblich hinterlegen will klappt's jetzt zwar besser, aber nach ungefähr 80.000 Zeilen bleibt Excel trotzdem hängen.
...nur zur INfo der Vollständigkeit halber.
Schönen Gruß, Ingo
- Marcus Herz
- 1000 working lines a day
- Beiträge: 860
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 196 Mal
- Kontaktdaten:
Re: DBF in XLSX konvertieren
Bei dem Datenvolumen wohl eher ein XLS Problem
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2518
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: DBF in XLSX konvertieren
Mit LibXL.DLL geht das echt schnell und gut.
Von Hubert gibts hier im Forum eine Klasse mit Beispielen der dir die ersten Schritte zeigt damit siehst du wie einfach das geht.
Nach einigen Sorgen mit dem Excel Objekt habe ich auf LibXL umgestellt seitdem haben die Anwender keine Probleme mehr.
Was damit nicht geht sind einzig "XLSB" Tabellen.
Von Hubert gibts hier im Forum eine Klasse mit Beispielen der dir die ersten Schritte zeigt damit siehst du wie einfach das geht.
Nach einigen Sorgen mit dem Excel Objekt habe ich auf LibXL umgestellt seitdem haben die Anwender keine Probleme mehr.
Was damit nicht geht sind einzig "XLSB" Tabellen.
Valar Morghulis
Gruss Carlo
Gruss Carlo
- ingo
- UDF-Programmierer
- Beiträge: 62
- Registriert: Fr, 19. Okt 2007 10:20
- Wohnort: Lüneburg
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: DBF in XLSX konvertieren @Carlo
Moin Carlo,
danke für den Libxl-Tipp. Es ist allerdings so, dass es sich bei dem Problem eher um eine Art Goodie für einen einzigen Kunden handelt, der dafür weniger zahlen wird, als die Libxl kostet - von daher ist das im Moment nix, aber ich hab's im Hinterkopf, dass es sowas gibt.
danke für den Libxl-Tipp. Es ist allerdings so, dass es sich bei dem Problem eher um eine Art Goodie für einen einzigen Kunden handelt, der dafür weniger zahlen wird, als die Libxl kostet - von daher ist das im Moment nix, aber ich hab's im Hinterkopf, dass es sowas gibt.
Schönen Gruß, Ingo
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: DBF in XLSX konvertieren
hi,
ausser Xbase++ ActiveX gäbe es noch DispHelper in Ot4Xb was zudem viel schneller ist.
Nachteil : es kann keine Events "empfangen"
ActiveX ist für "allgemein" gedacht während ADO für Daten das Werkzeug ist was man verwenden sollte.
https://www.microsoft.com/en-us/downloa ... n&id=13255
dabei setzt ADO kein EXCEL voraus um ein XLSx zu erstellen/füllen.
es ähnelt eher ODBC und ist auch mit SQL zu verwenden
p.s. es könnte die VC Runtime nach der Installation von ADO fehlen
Visual C++ Redistributable für Visual Studio
https://www.microsoft.com/de-DE/downloa ... x?id=48145
ausser Xbase++ ActiveX gäbe es noch DispHelper in Ot4Xb was zudem viel schneller ist.
Nachteil : es kann keine Events "empfangen"
ActiveX ist für "allgemein" gedacht während ADO für Daten das Werkzeug ist was man verwenden sollte.
https://www.microsoft.com/en-us/downloa ... n&id=13255
dabei setzt ADO kein EXCEL voraus um ein XLSx zu erstellen/füllen.
es ähnelt eher ODBC und ist auch mit SQL zu verwenden
p.s. es könnte die VC Runtime nach der Installation von ADO fehlen
Visual C++ Redistributable für Visual Studio
https://www.microsoft.com/de-DE/downloa ... x?id=48145
gruss by OHR
Jimmy
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: DBF in XLSX konvertieren
Hi,
falls es dazu noch fragen gibt, ich meine das erste Beispiel von Xbase ActiveX ist genau diese Aufgabe !
Per PRG Fernsteuerung ist das auch kein Problem, nur wenn man im neuen Excel Datei öffnen macht, findet man keine DBF ... sehr gut versteckt in den Eigenschaften oder Optionen von Excel gibt es eine Tabelle,
welche Dateiformate angezeigt werden sollen, da kann man es wieder einschalten und gut ist.
Mein Exportprogramm, mit dem ich XLSX oder XLSB speichere habe ich bis Excel 2013 getestet, aber die VBA Schnittstelle sollte mit allen gehen.
falls es dazu noch fragen gibt, ich meine das erste Beispiel von Xbase ActiveX ist genau diese Aufgabe !
Per PRG Fernsteuerung ist das auch kein Problem, nur wenn man im neuen Excel Datei öffnen macht, findet man keine DBF ... sehr gut versteckt in den Eigenschaften oder Optionen von Excel gibt es eine Tabelle,
welche Dateiformate angezeigt werden sollen, da kann man es wieder einschalten und gut ist.
Mein Exportprogramm, mit dem ich XLSX oder XLSB speichere habe ich bis Excel 2013 getestet, aber die VBA Schnittstelle sollte mit allen gehen.
Gruß
Hubert
Hubert
- ingo
- UDF-Programmierer
- Beiträge: 62
- Registriert: Fr, 19. Okt 2007 10:20
- Wohnort: Lüneburg
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: DBF in XLSX konvertieren
Hallo und danke für die Tipps zum Thema!
Mein Problem hat sich jetzt allerdings aufgelöst und zwar ist für die Abstürze beim Formatieren offenbar irgendein Office-(2016)-Problem (auf meinem Programmier-Rechner) verantwortlich.
Das selbe Programm funktioniert auf bisher 2 anderen Rechnern (mit Office 2013 und 2016.)
Auf dem Problem-Rechner gab es zwischendurch unmotiviert die Nachricht, dass es ein Problem mit meinem Microsoft-Konto gäbe, ich hätte möglicherweise das Passwort geändert. Das Problem tritt aber auf unabhängig davon auf, ob eine Anmeldung aktiv ist oder nicht.
Also für mich ist das Problem durch das Verwenden von "Range" gelöst.
Mein Problem hat sich jetzt allerdings aufgelöst und zwar ist für die Abstürze beim Formatieren offenbar irgendein Office-(2016)-Problem (auf meinem Programmier-Rechner) verantwortlich.
Das selbe Programm funktioniert auf bisher 2 anderen Rechnern (mit Office 2013 und 2016.)
Auf dem Problem-Rechner gab es zwischendurch unmotiviert die Nachricht, dass es ein Problem mit meinem Microsoft-Konto gäbe, ich hätte möglicherweise das Passwort geändert. Das Problem tritt aber auf unabhängig davon auf, ob eine Anmeldung aktiv ist oder nicht.
Also für mich ist das Problem durch das Verwenden von "Range" gelöst.
Schönen Gruß, Ingo
- Eugeny Lutsenko
- Rekursionen-Architekt
- Beiträge: 108
- Registriert: Fr, 15. Mai 2020 16:16
- Wohnort: Russland, der südliche Föderale Bezirk, die Stadt Krasnodar
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: DBF in XLSX konvertieren
DBF->XLS:
Sie können einfach eine DBF-Datei mit einem Namen schreiben, der auf xls endet.
XLS->DBF:
In meinem Text системы:http://lc.kubagro.ru/__AidosALL.txt es gibt eine Funktion LC_Excel 2 WorkArea(), suchen Sie nach: "FUNCTION LC_Excel2WorkArea(". Diese Funktion konvertiert auch große DBF->XLS-Dateien schnell. Excel muss auf dem Computer installiert sein, damit diese Funktion funktioniert. Bei den neuesten Versionen von Excel funktioniert diese Funktion möglicherweise nicht.
Sie können einfach eine DBF-Datei mit einem Namen schreiben, der auf xls endet.
XLS->DBF:
In meinem Text системы:http://lc.kubagro.ru/__AidosALL.txt es gibt eine Funktion LC_Excel 2 WorkArea(), suchen Sie nach: "FUNCTION LC_Excel2WorkArea(". Diese Funktion konvertiert auch große DBF->XLS-Dateien schnell. Excel muss auf dem Computer installiert sein, damit diese Funktion funktioniert. Bei den neuesten Versionen von Excel funktioniert diese Funktion möglicherweise nicht.