Poerke Geschrieben 30. Juni 2008 Geschrieben 30. Juni 2008 Hallo, mein Anwendung hatte mit Hilfe von VB 6 aus einer Oberflächentabelle eine .txt Datei erzeugt. Wobei Inhalte eines DS so erzeugt wurde: With DS stName = .Name stVorname = .Vorname stMerker = Replace(.Geburtsdatum, ".", "") stGeburtsdatum = Left(stMerker, 4) & Right(stMerker, 2) stPLZ = .PLZ stOrt = .Wohnort stStraße = .Straße stNummer = .HausNr stZusatz = .Zusatz stGrad = CStr(.Grad) '(.Grad, "000") stFA = CStr(.FA) ' format(.FA, "00") stGemeinde = CStr(.Gemeinde) 'format(.Gemeinde, "000000") stMerker = Replace(.GültigBis, ".", "") stGültigBis = Left(stMerker, 4) & Right(stMerker, 2) stBenutzer = .Benutzer stBenutzer = UCase(gstBenutzerName) stDatum = format(Date, "ddmmyy") End With und danach folgender DS-String an die Datei gehängt wurde: stDatensatz = _ stName & _ stVorname & _ stGeburtsdatum & _ stPLZ & _ stOrt & _ stStraße & _ stNummer & _ stZusatz & _ stGrad & _ stFA & _ stGemeinde & _ stGültigBis & _ stBenutzer & _ stDatum Im Ergebnis kam ein DS dieser Art heraus: MOLZBERG HER 30111865207WIESBADEN TRUMANWEG. 2 A 05040414000999999PF40270608 Die Listen können ziemlich umfangreich sein 4-5 Tausend DS sind keine Seltenheit! Nun sollte lt. Anwender lieber eine .csv-Datei verwendet werden, so dass sich diese mit Excel öffnen ließe! Ich habe die Separatoren gegen ";" ausgetauscht, so dass der übergebene DS-String nun so ausschaut: stDatensatz = _ stName & ";" & _ stVorname & ";" & _ stGeburtsdatum & ";" & _ stPLZ & ";" & _ stOrt & ";" & _ stStraße & ";" & _ stNummer & ";" & _ stZusatz & ";" & _ stGrad & ";" & _ stFA & ";" & _ stGemeinde & ";" & _ stGültigBis & ";" & _ stBenutzer & ";" & _ stDatum Das ";" bewirkte auch zutreffend eine Spaltentrennung beim Öffnen der .csv Datei, aber macht immer dann in den Zellen der betroffenen Spalte "Hausnummer/Zusatz" hier aus Beispieldatensatz statt 2 A => 02:00 AM! Vermutlich bei 2 P => 02:00 PM! Dass Erzeugen der Datei übernimmt das VB 6 Programm, der Anwender hat kein VB6 nur Excel! So, was ewig lange währt, hier jetzt meine Frage: Wie ist es möglich die .csv-Datei so zu erstellen, dass der Anwender die .csv Datei mit Excel so öffnen kann, dass die Angabe "2 A" nicht als Uhrzeitwert von Excel interpretiert wird? (Gibt es vielleicht so etwas wie einen Headerteil, mit dem man dass Format der einzelnen Spalten für Excel unmissverständlich mitteilt?) Zitieren
Amstelchen Geschrieben 30. Juni 2008 Geschrieben 30. Juni 2008 du musst bei den einzelnen feldern zusätzlich zum feldtrenner ; noch einen feldbegrenzer verwenden, z.b. das doppelhochkomma ". d.h. so oder so ähnlich: "MOLZBERG";"HER";"30111865207";"WIESBADEN";"TRUMANWEG. 2 A";" 05040414000999999PF40270608"(newline) da csv grundsätzlich sprichwörtlich "kopflos" ist, kannst du zwar eine kopfzeil einbauen, excel selbst wird diese aber natürlich immer als erste datenzeile sehen. eine formatvereinbarung (datentyp der zellen) kennt CSV generell nicht. excel hat in den meisten versionen aber ohnehin das problem, dass die datei, wenn sie nicht über "daten -> importieren" eingelesen (sondern z.b. per doppelklick geöffnet) wird, das CSV darzustellen. s'Amstel Zitieren
Poerke Geschrieben 1. Juli 2008 Autor Geschrieben 1. Juli 2008 Ja, daran hatte es gelegen! Obwohl die Teile der Zeichenkette einzeln für sich gesehen bereits Strings waren, so kam bei Excel durch den Separator doch wieder nur Zahlen,Datumswerte oder Text an. Mit jeweiligem Doppelhochkomma werden die einzelnen Teile auch nur als Text interpretiert! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.