Excel als CSV speichern.
Moderator: Moderatoren
Excel als CSV speichern.
Hallo.
Vielleicht hat jemand eine Idee.
Als Quelle habe ich Excel Tabellen mit teilweise mehreren 100.000 Zeilen.
Ich öffne die Tabelle mit ("Excel.Application").
Diese speichere ich als „*.csv“ ab.
Code:
oExcel := CreateObject("Excel.Application")
oExcel:Visible := .F.
oWorkBook := oExcel:Workbooks:Open(cExcelDatei)
cTempFilename := cCsvPfad + "Temp.csv"
oWorkBook:SaveAs(cTempFilename,6)
Codeende.
Das Problem ist, dass die Trennzeichen in der „+.csv“ Datei „;“ sind.
In den Excel Feldern kommen aber auch „;“ vor.
Ich habe eine Lösung, die ist aber jetzt zu langsam geworden, da die Excel Dateien immer größer werden.
Gibt es vielleicht die Möglichkeit bei „Save As“ das Trennzeichen anzugeben?
So ne Art: oWorkBook:Delimeter := ASC(xy)
Oder bietet da die LibXl eine Lösung an.
Wenn es eine Möglichkeit gibt die Excel Tabelle direkt in eine DBF zu kopieren, wäre das wahrscheinlich das Beste. Aber davon habe ich auch nióch nie was gehört.
Bin über jeden Vorschlag dankbar.
VG Rolf
Vielleicht hat jemand eine Idee.
Als Quelle habe ich Excel Tabellen mit teilweise mehreren 100.000 Zeilen.
Ich öffne die Tabelle mit ("Excel.Application").
Diese speichere ich als „*.csv“ ab.
Code:
oExcel := CreateObject("Excel.Application")
oExcel:Visible := .F.
oWorkBook := oExcel:Workbooks:Open(cExcelDatei)
cTempFilename := cCsvPfad + "Temp.csv"
oWorkBook:SaveAs(cTempFilename,6)
Codeende.
Das Problem ist, dass die Trennzeichen in der „+.csv“ Datei „;“ sind.
In den Excel Feldern kommen aber auch „;“ vor.
Ich habe eine Lösung, die ist aber jetzt zu langsam geworden, da die Excel Dateien immer größer werden.
Gibt es vielleicht die Möglichkeit bei „Save As“ das Trennzeichen anzugeben?
So ne Art: oWorkBook:Delimeter := ASC(xy)
Oder bietet da die LibXl eine Lösung an.
Wenn es eine Möglichkeit gibt die Excel Tabelle direkt in eine DBF zu kopieren, wäre das wahrscheinlich das Beste. Aber davon habe ich auch nióch nie was gehört.
Bin über jeden Vorschlag dankbar.
VG Rolf
VG Rolf
- Marcus Herz
- 1000 working lines a day
- Beiträge: 863
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 40 Mal
- Danksagung erhalten: 197 Mal
- Kontaktdaten:
Re: Excel als CSV speichern.
Code: Alles auswählen
define xlDBF3 8
oWorkBook:SaveAs(cTempFilename,xlDBF3)
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: Excel als CSV speichern.
Wow.
Probiere ich sofort aus.
Das wäre echt der Hammer!
Vielen Dank Markus.
Gibt es so eine Liste auch für die Bearbeitung von Excel Tabellen?
EDIT: Ich habe es gesehen...
VG Rolf
Probiere ich sofort aus.
Das wäre echt der Hammer!
Vielen Dank Markus.
Gibt es so eine Liste auch für die Bearbeitung von Excel Tabellen?
EDIT: Ich habe es gesehen...
VG Rolf
Zuletzt geändert von DerRolf am Mi, 17. Nov 2021 11:46, insgesamt 1-mal geändert.
VG Rolf
- HaPe
- 1000 working lines a day
- Beiträge: 996
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: Excel als CSV speichern.
Hallo Marcus !
Das funktioniert leider schon seit Excel 2007 oder so nicht mehr, weil $MS den DBF-Filter entfernt hatdefine xlDBF3 8
oWorkBook:SaveAs(cTempFilename,xlDBF3)
--
Hans-Peter
Hans-Peter
Re: Excel als CSV speichern.
Hallo Marcus.Marcus Herz hat geschrieben: ↑Mi, 17. Nov 2021 11:34https://docs.microsoft.com/de-de/office ... fileformatCode: Alles auswählen
define xlDBF3 8 oWorkBook:SaveAs(cTempFilename,xlDBF3)
Das klappt leider nicht.
Betriebssystemfehler: -212......
Wäre auch zu schön gewesen....
VG Rolf
VG Rolf
-
- Rookie
- Beiträge: 2
- Registriert: Mi, 17. Nov 2021 16:02
- Danksagung erhalten: 2 Mal
Re: Excel als CSV speichern.
Hi,
Ich spreche nicht fließend Deutsch, aber mit Hilfe von Google Translate kann ich vielleicht helfen (Englisch folgt)...
Anscheinend verwendet Excel das Listentrennzeichen, das in den Windows-Regionseinstellungen definiert ist, auf die über die Systemsteuerung für das CSV-Trennzeichen zugegriffen werden kann. Dies muss vor dem Öffnen von Excel festgelegt werden. Ich habe auch gehört, dass das Dezimalzeichen nicht mit dem Listentrennzeichen identisch sein kann.
Hoffe das hilft... Jonathan
Hi,
Apparently Excel uses the list separator character defined in Windows Region Settings accessible from the control panel for the CSV separator. This needs to be set before Excel is opened. I also heard that the Decimal Symbol can not be the same as the list separator.
Hope This Helps... Jonathan
Ich spreche nicht fließend Deutsch, aber mit Hilfe von Google Translate kann ich vielleicht helfen (Englisch folgt)...
Anscheinend verwendet Excel das Listentrennzeichen, das in den Windows-Regionseinstellungen definiert ist, auf die über die Systemsteuerung für das CSV-Trennzeichen zugegriffen werden kann. Dies muss vor dem Öffnen von Excel festgelegt werden. Ich habe auch gehört, dass das Dezimalzeichen nicht mit dem Listentrennzeichen identisch sein kann.
Hoffe das hilft... Jonathan
Hi,
Apparently Excel uses the list separator character defined in Windows Region Settings accessible from the control panel for the CSV separator. This needs to be set before Excel is opened. I also heard that the Decimal Symbol can not be the same as the list separator.
Hope This Helps... Jonathan
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: Excel als CSV speichern.
Hi, Jonathan.
Welcome! GoogleTranslate makes an excellent job, don't worry.
Welcome! GoogleTranslate makes an excellent job, don't worry.
Herzlich,
Tom
Tom
- BJelinek
- Rekursionen-Architekt
- Beiträge: 221
- Registriert: Sa, 02. Jun 2012 20:57
- Wohnort: 73257 Köngen
- Hat sich bedankt: 10 Mal
- Danksagung erhalten: 3 Mal
Re: Excel als CSV speichern.
Hallo Rolf,
vieleicht hilft Dir das weiter:
https://www.pctipp.ch/praxis/office/tri ... 96442.html
Auch hilft es bestimmte Änderungen oder Vorgänge in Makros aufzuzeichnen, um sie dann
übersetzt in xbase zu verwenden.
vieleicht hilft Dir das weiter:
https://www.pctipp.ch/praxis/office/tri ... 96442.html
Auch hilft es bestimmte Änderungen oder Vorgänge in Makros aufzuzeichnen, um sie dann
übersetzt in xbase zu verwenden.
Grüße
Bernd
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Bernd
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Re: Excel als CSV speichern.
Danke.BJelinek hat geschrieben: ↑Mi, 17. Nov 2021 17:55 Hallo Rolf,
vieleicht hilft Dir das weiter:
https://www.pctipp.ch/praxis/office/tri ... 96442.html
Auch hilft es bestimmte Änderungen oder Vorgänge in Makros aufzuzeichnen, um sie dann
übersetzt in xbase zu verwenden.
Das Trennzeichen müsste schon definierbar sein. Was man sicher nicht in einer Artikelbeschreibung verwendet.
VG Rolf
VG Rolf
Re: Excel als CSV speichern.
Hi Jonathan.JonathanLeeming hat geschrieben: ↑Mi, 17. Nov 2021 16:34 Hi,
Ich spreche nicht fließend Deutsch, aber mit Hilfe von Google Translate kann ich vielleicht helfen (Englisch folgt)...
Anscheinend verwendet Excel das Listentrennzeichen, das in den Windows-Regionseinstellungen definiert ist, auf die über die Systemsteuerung für das CSV-Trennzeichen zugegriffen werden kann. Dies muss vor dem Öffnen von Excel festgelegt werden. Ich habe auch gehört, dass das Dezimalzeichen nicht mit dem Listentrennzeichen identisch sein kann.
Hoffe das hilft... Jonathan
Hi,
Apparently Excel uses the list separator character defined in Windows Region Settings accessible from the control panel for the CSV separator. This needs to be set before Excel is opened. I also heard that the Decimal Symbol can not be the same as the list separator.
Hope This Helps... Jonathan
Thats it.
Thank you.
But Excel still puts the ";" in inverted commas.
Rolf
VG Rolf
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: Excel als CSV speichern.
Ich verstehe das Problem nicht. Mal davon abgesehen, dass man an die Daten über die ODBCDBE oder per ActiveX direkt herankommt, also eigentlich den Umweg über die Speicherung nicht benötigt, kann man sich doch eine eigene Einlesefunktion bauen, die entweder das Format korrigiert oder im ungenauen CSV-Format importiert. Eine Textdatei zeilenweise einzulesen und auf Basis irgendeines Trennzeichens in Spalten aufzuteilen, ist doch nun wirklich kein Problem. Edit: Hubert hat doch seine schnelle Textdatei-Einlesefunktion hier irgendwo gepostet. Die kann man dafür verwenden.
Herzlich,
Tom
Tom
Re: Excel als CSV speichern.
Hallo Tom.Tom hat geschrieben: ↑Do, 18. Nov 2021 8:43 Ich verstehe das Problem nicht. Mal davon abgesehen, dass man an die Daten über die ODBCDBE oder per ActiveX direkt herankommt, also eigentlich den Umweg über die Speicherung nicht benötigt, kann man sich doch eine eigene Einlesefunktion bauen, die entweder das Format korrigiert oder im ungenauen CSV-Format importiert. Eine Textdatei zeilenweise einzulesen und auf Basis irgendeines Trennzeichens in Spalten aufzuteilen, ist doch nun wirklich kein Problem. Edit: Hubert hat doch seine schnelle Textdatei-Einlesefunktion hier irgendwo gepostet. Die kann man dafür verwenden.
Ich lese die Textdatei zeilenweise ein, und korrigiere die Trennzeichen.
Es ist nur zu langsam geworden.
Direkt auf die Tabelle zugreifen, ist noch viel langsamer.
Wie gesagt es sind Tabellen mit teilweise über 300.000 Zeilen und 45 Spalten. Das sind bei einer Datei 13.500.000 Trennzeichen bearbeiten / kontrollieren.
Auch bei einem sehr schnellen Rechner dauert das über 30 Minuten. Manchmal sind es 30 bis 40 Dateien.
VG Rolf
VG Rolf
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: Excel als CSV speichern.
Hallo, Rolf.
Hast Du Dir Huberts Funktion mal angesehen? Die ist sehr schnell, auch bei großen Dateien.
Hast Du Dir Huberts Funktion mal angesehen? Die ist sehr schnell, auch bei großen Dateien.
Herzlich,
Tom
Tom
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel als CSV speichern.
hi,
die Zeit die benötigt wird ist primär von der Schreib-Geschwindigkeit abhängig.
um ein Excel Sheet in ein Array zu übertragen dauert es ... 1 Sec.
Problem : Das Array "könnte" für 32 Bit zu gross werden ...
damit wären wir beim "erstellen" der CSV wo man mit FWRITE() arbeiten kann
wenn das bei dir "Minuten" benötigt brauchst du eine schnelle NVM
----
es ist notwendig ein leeres Array von der "selben" Grösse wie der "select" Bereich im Excel Sheet ist
die Zeit die benötigt wird ist primär von der Schreib-Geschwindigkeit abhängig.
um ein Excel Sheet in ein Array zu übertragen dauert es ... 1 Sec.
Problem : Das Array "könnte" für 32 Bit zu gross werden ...
damit wären wir beim "erstellen" der CSV wo man mit FWRITE() arbeiten kann
wenn das bei dir "Minuten" benötigt brauchst du eine schnelle NVM
----
es ist notwendig ein leeres Array von der "selben" Grösse wie der "select" Bereich im Excel Sheet ist
Code: Alles auswählen
oExcel := CreateObject( "Excel.Application" )
oExcel:visible := .T. // visible
// If there is a problem, don't let excel pop up messages
oExcel:Application:DisplayAlerts := .F.
// full Path
oExcel:Application:Workbooks:open(cPATH+cFILE)
// Make the first one active
oWorkBook := oExcel:activeWorkBook
oExcel:Application:Worksheets(1):activate()
// Speed things up by creating an object containing the cells
oSheet := oExcel:Worksheets(1):cells
// "select" used Range (hole Sheet)
oWorkBook:workSheets(1):usedRange:Select
numRows := oWorkBook:workSheets(1):usedRange:Rows:Count
numColumns := oWorkBook:workSheets(1):usedRange:Columns:Count
// build Array with same Size
FOR i := 1 TO numRows
AADD(aExcel,ARRAY(numColumns))
NEXT
// convert Numeric to "A1"
cEnde := ZAHL2CHR(numColumns)
// now get "select" Range into Array
aExcel := oSheet:range( "A1:"+cEnde+LTRIM(STR(numRows)) ):value
gruss by OHR
Jimmy
Jimmy
Re: Excel als CSV speichern.
Hallo Tom, Hallo Marvin.
Danke für eure Hilfe.
Das Problem besteht nicht im Schreiben der CSV Datei. Das sind Sekunden. (Ich habe eine Samsung SSD 980 Pro 1TB M.2)
Das Problem ist das Bereinigen der überflüssigen Trennzeichen, die Excel eigenständig bei im Text verwendeten Anführungszeichen, oder Semikolon einsetzt.
Hier mal ein Beispiel:
Feld1 Feld2 Feld3 Feld4
Excel Sheet: ...4260255420183 Viawant ;Nitrile; Pro XS Nitrilhandschuhe; "EN455" ;AQL1.5 puderfrei,latexfrei,unsteril...
Nach Speicherung als CSV: ...;4260255420183;;"Viawant ;Nitrile; Pro XS";"Nitrilhandschuhe; ""EN455"" ;AQL1.5";puderfrei,latexfrei,unsteril;...
Und dabei läuft mir halt die Zeit weg....
Am Rechner liegts nicht. CPU i9-10940X.
Danke für eure Hilfe.
Das Problem besteht nicht im Schreiben der CSV Datei. Das sind Sekunden. (Ich habe eine Samsung SSD 980 Pro 1TB M.2)
Das Problem ist das Bereinigen der überflüssigen Trennzeichen, die Excel eigenständig bei im Text verwendeten Anführungszeichen, oder Semikolon einsetzt.
Hier mal ein Beispiel:
Feld1 Feld2 Feld3 Feld4
Excel Sheet: ...4260255420183 Viawant ;Nitrile; Pro XS Nitrilhandschuhe; "EN455" ;AQL1.5 puderfrei,latexfrei,unsteril...
Nach Speicherung als CSV: ...;4260255420183;;"Viawant ;Nitrile; Pro XS";"Nitrilhandschuhe; ""EN455"" ;AQL1.5";puderfrei,latexfrei,unsteril;...
Und dabei läuft mir halt die Zeit weg....
Am Rechner liegts nicht. CPU i9-10940X.
VG Rolf
Re: Excel als CSV speichern.
AUGE_OHR hat geschrieben: ↑Do, 18. Nov 2021 9:42 hi,
die Zeit die benötigt wird ist primär von der Schreib-Geschwindigkeit abhängig.
um ein Excel Sheet in ein Array zu übertragen dauert es ... 1 Sec.
Problem : Das Array "könnte" für 32 Bit zu gross werden ...
damit wären wir beim "erstellen" der CSV wo man mit FWRITE() arbeiten kann
wenn das bei dir "Minuten" benötigt brauchst du eine schnelle NVM
----
es ist notwendig ein leeres Array von der "selben" Grösse wie der "select" Bereich im Excel Sheet istCode: Alles auswählen
oExcel := CreateObject( "Excel.Application" ) oExcel:visible := .T. // visible // If there is a problem, don't let excel pop up messages oExcel:Application:DisplayAlerts := .F. // full Path oExcel:Application:Workbooks:open(cPATH+cFILE) // Make the first one active oWorkBook := oExcel:activeWorkBook oExcel:Application:Worksheets(1):activate() // Speed things up by creating an object containing the cells oSheet := oExcel:Worksheets(1):cells // "select" used Range (hole Sheet) oWorkBook:workSheets(1):usedRange:Select numRows := oWorkBook:workSheets(1):usedRange:Rows:Count numColumns := oWorkBook:workSheets(1):usedRange:Columns:Count // build Array with same Size FOR i := 1 TO numRows AADD(aExcel,ARRAY(numColumns)) NEXT // convert Numeric to "A1" cEnde := ZAHL2CHR(numColumns) // now get "select" Range into Array aExcel := oSheet:range( "A1:"+cEnde+LTRIM(STR(numRows)) ):value
Hallo.
Die Variante hatte ich mal vor Jahren ausprobiert. Das bleibt nachher fast stehen.
VG Rolf
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: Excel als CSV speichern.
Schau Dir mal Huberts Klasse an, Rolf. Link vier Nachrichten rückwärts.
Herzlich,
Tom
Tom
Re: Excel als CSV speichern.
Habe ich.
Steige ich nicht durch alles durch. Erstellen von Excel Sheets ohne Excel...
Aber auslesen habe ich nicht gefunden. *schäm*
Edit:
War auf der falschen HP.
LIBXL.com ist wohl die richtige Seite.
Das schaue ich mir mal an.
Danke.
VG Rolf
- brandelh
- Foren-Moderator
- Beiträge: 15710
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 73 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: Excel als CSV speichern.
Hallo,
wenn die Daten in Excel vorliegen und Texte mit ";" vorhanden sind gibt es ein echtes Problem.
Excel (und wohl auch die Definition) sagt, dass alles was in " " eingefasst ist, kein Steuerzeichen ist, z.B. auch Zeilenschaltungen.
Nur dass zumindest bei das so keiner umgesetzt hat
Wenn die Daten in Textdateien vorliegen kann man meine Textreader Klasse verwenden, wenn man XLS / XLSX Dateien hat, kann man ohne Excel mit LibXL zugreifen.
Der Export in DBF Dateien ist immer problematisch, da die Feldnamen oft nicht erlaubt sind, ob es noch geht weiß ich daher aus dem Stand gar nicht.
Der Import aus einer DBF geht aber einwandfrei, das mache ich oft (Excel 2010, höher habe ich das noch nicht probiert).
wenn die Daten in Excel vorliegen und Texte mit ";" vorhanden sind gibt es ein echtes Problem.
Excel (und wohl auch die Definition) sagt, dass alles was in " " eingefasst ist, kein Steuerzeichen ist, z.B. auch Zeilenschaltungen.
Nur dass zumindest bei das so keiner umgesetzt hat
Wenn die Daten in Textdateien vorliegen kann man meine Textreader Klasse verwenden, wenn man XLS / XLSX Dateien hat, kann man ohne Excel mit LibXL zugreifen.
Der Export in DBF Dateien ist immer problematisch, da die Feldnamen oft nicht erlaubt sind, ob es noch geht weiß ich daher aus dem Stand gar nicht.
Der Import aus einer DBF geht aber einwandfrei, das mache ich oft (Excel 2010, höher habe ich das noch nicht probiert).
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15710
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 73 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: Excel als CSV speichern.
Ich sehe gerade .... "" zuviel und sollen nach " umgesetzt werden ?
Memoread() // besser wäre eine eigene Funktion mit FOpen() File2Str()
https://www.xbaseforum.de/viewtopic.php?f=16&t=1811
solange die Datei so 200 MB oder 300 MB nicht überschreitet, kann man das direkt einlesen und mit StrTran() die "" nach " tauschen lassen.
danach wieder speichern:
Str2Disk(cFile,cTxt)
Memoread() // besser wäre eine eigene Funktion mit FOpen() File2Str()
https://www.xbaseforum.de/viewtopic.php?f=16&t=1811
solange die Datei so 200 MB oder 300 MB nicht überschreitet, kann man das direkt einlesen und mit StrTran() die "" nach " tauschen lassen.
danach wieder speichern:
Str2Disk(cFile,cTxt)
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel als CSV speichern.
hi,
das liegt daran das dir der Speicher unter 32 Bit "ausgeht", ansonsten ist es IHMO die "schnellste" Methode
gruss by OHR
Jimmy
Jimmy
- BJelinek
- Rekursionen-Architekt
- Beiträge: 221
- Registriert: Sa, 02. Jun 2012 20:57
- Wohnort: 73257 Köngen
- Hat sich bedankt: 10 Mal
- Danksagung erhalten: 3 Mal
Re: Excel als CSV speichern.
Hallo Rolf,
man kann doch Jimmys Methode mit Huberst kombinieren.
Immer eine Anzahl Zeilen z.B. 1000 in array einlesen und mit fwrite speichern
dann die nächsten Zeilen in array einlesen und mit fwrite speichern
so lange bis keine Zeilen mehr vorhanden.
Die Gesamtzahl der Zeilen lässt sich ja ermitteln.
Das könnte das 32bit Speicherproblem umgehen, wie bei Hubert mit großen Dateien.
Ich habe aber noch nicht verstanden, was Du willst.
Du hast meherere Excel-Dateien.
Was soll mit den Daten geschehen?
- excel in csv-Dateien wandeln
- excel in dbf-Dateien wandeln
Dies könnte man auch mit LibreOffice machen, da kann man Excel als DBF speichern.
- excel-Daten im Programm verarbeiten
- csv-Dateien in andere csv-Dateien umwandeln
man kann doch Jimmys Methode mit Huberst kombinieren.
Immer eine Anzahl Zeilen z.B. 1000 in array einlesen und mit fwrite speichern
dann die nächsten Zeilen in array einlesen und mit fwrite speichern
so lange bis keine Zeilen mehr vorhanden.
Die Gesamtzahl der Zeilen lässt sich ja ermitteln.
Das könnte das 32bit Speicherproblem umgehen, wie bei Hubert mit großen Dateien.
Ich habe aber noch nicht verstanden, was Du willst.
Du hast meherere Excel-Dateien.
Was soll mit den Daten geschehen?
- excel in csv-Dateien wandeln
- excel in dbf-Dateien wandeln
Dies könnte man auch mit LibreOffice machen, da kann man Excel als DBF speichern.
- excel-Daten im Programm verarbeiten
- csv-Dateien in andere csv-Dateien umwandeln
Grüße
Bernd
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Bernd
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Re: Excel als CSV speichern.
Hallo Hubert.brandelh hat geschrieben: ↑Do, 18. Nov 2021 15:59 Ich sehe gerade .... "" zuviel und sollen nach " umgesetzt werden ?
Memoread() // besser wäre eine eigene Funktion mit FOpen() File2Str()
https://www.xbaseforum.de/viewtopic.php?f=16&t=1811
solange die Datei so 200 MB oder 300 MB nicht überschreitet, kann man das direkt einlesen und mit StrTran() die "" nach " tauschen lassen.
danach wieder speichern:
Str2Disk(cFile,cTxt)
Leider geht das nicht, da Excel bei einem ";" das ganze Feld in einfache Anführungszeichen setzt.
Diese müssen auch raus.
Problem ist, dass ich momentan auf die Kombi ";"" abfrage, und ändere.
Das ist wie gesagt zu langsam.
Ich versuche mal den Vorschlag von Jonathan, das Trennzeichen in der Region Einstellung auf einen Wert zu ändern, den die "kreativen Erfasser" nicht verwenden können.
Aber Excel versorgt trotzdem die CSV Datei mit den Anführungszeichen!
Dann würde ich wie beschrieben alle Anführungszeichen löschen. Dann würden auch alle in der Felder stehenden Anführungszeichen gelöscht.
Ist nicht 100%.
Ist es möglich mir bitte deine Funktion zum Lesen der CSV Dateien zukommen zu lassen?
VG Rolf