Autor
|
Thema: Textformatierung im CSV-Format (10746 mal gelesen)
|
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3701 Registriert: 15.10.2003 Win 10/64 Pro AutoCAD MAP 3D 2018 / 2023 BricsCAD 22
|
erstellt am: 12. Aug. 2010 20:09 <-- editieren / zitieren --> Unities abgeben:
Ich erstelle CSV-Dateien, die Texte wie "4.10" oder "4-10" enthalten. Da das automatisch in Formate wie "4. Oktober 1900" umgewandelt wird, muss ich das mit speziellen Zeichen codieren. In Excel macht man das direkt mit einfachem Hochkomma: '4.10 '4-10 Das klappt schön und das Hochkomma wird nicht angezeigt. Jetzt habe ich das Hochkomma auch ins CSV eingefügt - mit dem Ergebnis, das es in Excel zwar funktioniert, aber das Hochkomma angezeigt wird. Kann man das so machen, dass es nicht angezeigt wird? danke Peter PS: Beim Export von Excel in CSV und Rückimport in Excel sind die Hochkommas verloren ... ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Comos User Mitglied
Beiträge: 112 Registriert: 23.03.2010
|
erstellt am: 16. Aug. 2010 09:08 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Hallo Peter (der zweite), Erstmal, in einer CSV werden keinerlei Formatinformationen abgespeichert. Beim Einlesen versucht EXCEL erstmal alles irgentwie als Zahl (auch ein Datum ist ja nur eine Zahl) zu interpretieren, nur wenn die nicht gelingt wird ein Text erzeugt. Das ist insoweit auch konsequent, Excel als Tabellenkalkulation arbeitet nun mal vornehmnlich mir Zahlen. Die Sache mit dem Hochkomma stammt noch aus Urzeiten von Excel (eigentlich Lotus 1-2-3) und funktioniert nur noch bei direkter Eingabe. Wenn du die CSV mit der Endung .TXT oder .PRN abspeicherst kannst du beim Einlesen bestimmen wie einzelne Spalten zu formatieren sind. Wenn du hier TEXT angibst entsteht immer ein Text. Gruß Peter (der erste) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3701 Registriert: 15.10.2003 Win 10/64 Pro AutoCAD MAP 3D 2018 / 2023 BricsCAD 22
|
erstellt am: 16. Aug. 2010 10:10 <-- editieren / zitieren --> Unities abgeben:
Danke Peter Comos User Zitat: Original erstellt von Comos User: ...Die Sache mit dem Hochkomma stammt noch aus Urzeiten von Excel (eigentlich Lotus 1-2-3) und funktioniert nur noch bei direkter Eingabe...
Aber hier immerhin doch noch ... Die Import- und Formatierungsoptionen sind mir bekannt, doch das Ding muss einfach bei Doppelklick (ziemlich) sauber aufgehen. Manche Anwender sind in Dingen, die den Doppelklick übersteigen, nicht so fit Details bei Interesse hier: http://ww3.cad.de/foren/ubb/Forum54/HTML/025865.shtml Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 16. Aug. 2010 18:57 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Zitat: Original erstellt von Peter2: doch das Ding muss einfach bei Doppelklick (ziemlich) sauber aufgehen. Manche Anwender sind in Dingen, die den Doppelklick übersteigen, nicht so fit
Man kann nicht immer erwarten das das BS / Proggi mitdenkt, was der User bei Doppelklick will ;) Abgesehen davon, das es unterschiedliche Länder, Sprachen, Einstellungen, etc. und überall soll es funktionieren ;-) Sprich - Willst du eine reines Text-Einlesen mit der Trennung Semikolon, muss du wohl oder über das auch selberschreiben - sollte es Narren, Idioten und whatever-sicher sein ;) Code: Sub CSV_einlesen() Dim csvdatei As Variant Dim hfile As Integer ': Filehandle bzw. Dateinummer Dim i As Long ': Zähler über alle Zeilen Dim j As Integer ': Zähler über alle Spalten Dim oneLine As String ': Eine Zeile als String Dim fieldsep As String ': Trennzeichen Dim myArr As Variant ': eine Zeile in Felder getrennt csvdatei = Application.GetOpenFilename(filefilter:="CSV-Dateien (*.csv), *.csv") If csvdatei = False Then Exit Sub Worksheets.Add ': Tabelle anlegen fname = csvdatei fieldsep = ";" ' Einlesen hfile = FreeFile Open fname For Input As #hfile While Not EOF(hfile) i = i + 1 Line Input #hfile, oneLine myArr = Split(oneLine, fieldsep) For j = 0 To UBound(myArr) Cells(i, 1 + j).NumberFormat = "@" Cells(i, 1 + j).Value = myArr(j) Next Wend Close #hfileEnd Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Comos User Mitglied
Beiträge: 112 Registriert: 23.03.2010
|
erstellt am: 17. Aug. 2010 08:48 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Hallo zusammen, Zitat: Willst du eine reines Text-Einlesen mit der Trennung Semikolon, muss du wohl oder über das auch selberschreiben
Mitnichten! ein einfaches OpenText mit entsprechenden Parametern reicht. Die Parameter sind in der Hilfe gut beschrieben, im Zweifelsfall die oben beschriebene Aktion aufzeichnen. Einen Pferdefuß hatt das ganze noch, wenn die dateierweiterung "CSV" ist werden von offensichtlich alle weiteren Parameter von OpenText ignoriert. So bei Office 2003 beobachtet. Also Datei vorher umbenennen. Code: Workbooks.OpenText Filename:="C:\Mappe.xyz", Origin:=xlMSDOS, _ DataType:=xlDelimited, _ Semicolon:=True, FieldInfo:=Array( _ Array(1, xlTextFormat), _ Array(2, xlDMYFormat), _ Array(3, xlTextFormat))
Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|