AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi CSV Dateien über OLE importieren, falsches Format in Feldern
Thema durchsuchen
Ansicht
Themen-Optionen

CSV Dateien über OLE importieren, falsches Format in Feldern

Ein Thema von ArneWolf · begonnen am 16. Jul 2008 · letzter Beitrag vom 17. Jul 2008
 
ArneWolf

Registriert seit: 6. Feb 2008
5 Beiträge
 
#1

CSV Dateien über OLE importieren, falsches Format in Feldern

  Alt 16. Jul 2008, 11:42
Hallo,

ich arbeite an einem Programm, welches Datensätze aus extra dafür erstellten Excelvorlagen über OLE ausliest und in ein entsprechendes Übertragungsformat umwandelt (Übertragungsdatei ist reines Textformat).
Nun kam von Kundenseite der Wunsch hinzu auch CSV Dateien einlesen und übertragen zu können. An sich kein Problem, solange sich die erstellte CSV Datei an der Excelvorlage orientiert. Sprich es sollen bei der Umwandlung die gleichen Codierungs-Funktionen bei der CSV-Datei zum Einsatz kommen, wie auch schon bei den bisherigen Excel-Dateien, um sich größere Arbeiten an der eigentlichen Programmlogik selbst zu ersparen.

Nun tritt das Problem auf, dass die Daten der CSV-Datei von Excel falsch interpretiert werden und die einzelnen Felder mit diversen leider unpassenden Formaten belegt werden und diese falsch dargestellten Daten vom Programm anschließend auch so übernommen werden. Als Beispiel aus dem Uhrzeit-String "12:20" wird "0,513888888888889" ausgelesen oder aus "01.06.2007" wird "39234" usw. Das merkwürdige ist auch, öffne ich die CSV-Datei mit Excel, werden die meisten Daten noch korrekt dargestellt. Wandle ich jetzt aber das Arbeitsblatt in das eigentlich benötigte Text-Format um, so ist ein Großteil der Datensätze unbrauchbar geworden.
Deshalb funktioniert es leider auch nicht, das Arbeitsblatt zu Beginn als Text-Format zu formatieren.

Delphi-Quellcode:
ExcelApp:=CreateOLEObject('Excel.Application');
ExcelApp.Visible:=false;
ExcelApp.DisplayAlerts:=False;
ExcelApp.Workbooks.Open(Excelvorlage.text);
ExcelApp.Workbooks[1].Worksheets[1].Select;
ExcelApp.Selection.NumberFormat := '@';
Andere Versuche waren es einzelne Felder mit .NumberFormat zu formatieren, was auch nicht zum Erfolg führte.
Z.B. in der CSV-Datei steht "06:00". Excel interpretiert dies als benutzerdefiniertes Format und macht daraus "06:00:00" (auch wenn weiterhin "06:00" angezeigt werden). Delphi liest aus diesem Benutzerdefinierten-Feld nun aber "0,25" aus. Ändert man nun das Zellenformat in Text macht Excel von sich aus daraus ebenfalls wieder eine falsche "0,25", die so natürlich auch ausgelesen wird.

Das voranstellen eines Hochkommas brachte ebenso nichts, da hierbei auch nicht die richtigen Ursprungsdaten ausgelesen werde, sondern die falsch dargestellten einschließlich dem hinzugefügten Hochkomma.

Und mein dritter nicht brauchbarer Lösungsansatz war es, die CSV-Datei einfach temporär ins Excel-Format zu speichern und dann wieder einzulesen. Dies klappte allerdings auch nicht, da diese Datei von Excel nicht mehr erkannt wird.


Ich häng an diesem Problem/Denkfehler schon den ganzen Vormittag fest und habe noch keine brauchbare Lösung gefunden. Aber es sollte doch irgendwie möglich sein, Daten aus CSV-Files mit dem Umweg über Excel in ein Delphi-Programm zu importieren?

Danke und Gruß
Arne
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz