Seite 1 von 1

DBF in XLSX konvertieren

Verfasst: Mo, 15. Feb 2021 12:50
von DerRolf
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

Re: DBF in XLSX konvertieren

Verfasst: Mo, 15. Feb 2021 13:03
von Koverhage
Ja die dbf mit Excel öffnen und dann speichern als Excel Datei.

Re: DBF in XLSX konvertieren

Verfasst: Mo, 15. Feb 2021 13:11
von DerRolf
Hi Klaus.
Da finde ich jetzt nichts, wo man eine DBF in Excel importieren kann. ??

SQL etc..., aber kein DBF Format.

Gruß Rolf

Re: DBF in XLSX konvertieren

Verfasst: Mo, 15. Feb 2021 13:17
von Marcus Herz
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

Re: DBF in XLSX konvertieren

Verfasst: Mo, 15. Feb 2021 13:29
von DerRolf
Koverhage hat geschrieben: Mo, 15. Feb 2021 13:03 Ja die dbf mit Excel öffnen und dann speichern als Excel Datei.
Ich habs gefunden. :roll: #-o
Super, danke dir.

Re: DBF in XLSX konvertieren

Verfasst: Mo, 15. Feb 2021 13:31
von DerRolf
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
Hi Marcus.
Doch geht immer noch.
Beim " Datei öffnen", den Dateityp ändern.

Gruß Rolf

Re: DBF in XLSX konvertieren

Verfasst: Mo, 15. Feb 2021 13:48
von DerRolf
Koverhage hat geschrieben: Mo, 15. Feb 2021 13:03 Ja die dbf mit Excel öffnen und dann speichern als Excel Datei.
Gibt es eine Möglichkeit das in xBase zu machen?

Gruß Rolf

Re: DBF in XLSX konvertieren

Verfasst: Mo, 15. Feb 2021 14:05
von DerRolf
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

Re: DBF in XLSX konvertieren

Verfasst: Mo, 15. Feb 2021 14:15
von ingo
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.)
Excel_Beispiel.prg
(5.67 KiB) 345-mal heruntergeladen

Re: DBF in XLSX konvertieren

Verfasst: Mo, 15. Feb 2021 14:30
von Marcus Herz
XLS Formatierungen, hatte ich auch meine Problem.
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

Re: DBF in XLSX konvertieren

Verfasst: Mo, 15. Feb 2021 14:34
von ingo
Moin Marcus,
danke für den Tipp!
Da werde ich mal herumprobieren.

Re: DBF in XLSX konvertieren

Verfasst: Mo, 15. Feb 2021 14:36
von DerRolf
Danke dir Ingo.
Das sind aber teilweise 400.000 Zeilen.
Mir würde schon das Öffnen einer DBF unter xBase weiterhelfen.

Gruß Rolf

Re: DBF in XLSX konvertieren

Verfasst: Mo, 15. Feb 2021 14:45
von ingo
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.

Re: DBF in XLSX konvertieren

Verfasst: Mo, 15. Feb 2021 14:50
von DerRolf
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.
Hi Ingo.
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

Re: DBF in XLSX konvertieren @Markus wg. range

Verfasst: Mo, 15. Feb 2021 16:55
von ingo
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.

Re: DBF in XLSX konvertieren

Verfasst: Mo, 15. Feb 2021 17:06
von Marcus Herz
Bei dem Datenvolumen wohl eher ein XLS Problem

Re: DBF in XLSX konvertieren

Verfasst: Mo, 15. Feb 2021 20:29
von ramses
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.

Re: DBF in XLSX konvertieren @Carlo

Verfasst: Di, 16. Feb 2021 9:42
von ingo
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.

Re: DBF in XLSX konvertieren

Verfasst: Di, 16. Feb 2021 10:03
von ramses
Hallo Ingo

Dann wäre die Ansage: "Kauf es oder lass es." vielleicht passend.

Re: DBF in XLSX konvertieren

Verfasst: Mo, 22. Feb 2021 20:45
von AUGE_OHR
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

Re: DBF in XLSX konvertieren

Verfasst: Mo, 22. Feb 2021 23:56
von brandelh
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.

Re: DBF in XLSX konvertieren

Verfasst: Di, 23. Feb 2021 9:41
von ingo
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.

Re: DBF in XLSX konvertieren

Verfasst: Fr, 07. Jan 2022 7:57
von Eugeny Lutsenko
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.