| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Hilfe bei CSV-Import (1238 mal gelesen)
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 23. Nov. 2010 10:46 <-- editieren / zitieren --> Unities abgeben:
Hallo Ich knobel schon seit geraumer Zeit, da ich eine CSV-Datei einlesen muß. Die Datei stammt aus einer Datenbank auf deren Exportoptionen ich keinen Einfluß habe. Ich muß es nehmen wie's kommt. Die Schwierigkeiten habe ich mit den Feldtrennern. "12345";"001";ja;"Text; Text";"Text";;;"";"0001";nein;;0;ja Wie man sieht, ist im vierten Feld ein Semikolon mitten im Text. Hat jemand einen Tip wie ich Split beibringe dieses Semikolon nicht als Feldtrenner zu interpretieren? ------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mssoftware Mitglied alles mögliche
Beiträge: 76 Registriert: 15.06.2005 Design Suite 2011-2016 Ultimate Microsoft Visual Studio Professional 2010<P>i7 2600K @3,4Ghz Windows 7 64bit nvidia GTX 760 16GB RAM 2x SSD256GB NAS 1TB (gespiegelt)
|
erstellt am: 23. Nov. 2010 14:56 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
Hallo rkauskh, wie man die Splitfunktion dahingehend beeinflussen kann, weiß ich nicht. Ich würde es so programmieren: Code: Dim temp As String = """12345""" & ";" & """001""" & """;ja;""" & """Text; Text""" & ";" & """Text""" & ";;;" & """""" & ";" & """0001""" & """;nein;;0;ja""" Dim innerhalb_string As Boolean = False Dim ergebniss(1) As String Dim array_i As Integer = 1 For i As Integer = 0 To temp.Length - 1 If temp(i) = Chr(34) Then If innerhalb_string Then innerhalb_string = False 'Arrayindex um 1 erhöhen array_i += 1 ReDim Preserve ergebniss(array_i + 1) Else innerhalb_string = True End If Else If innerhalb_string Then ergebniss(array_i) = ergebniss(array_i) + temp(i) End If End If Next 'Array durchlaufen und Text im Debugfenster ausgeben For i2 As Integer = 1 To UBound(ergebniss) - 1 Debug.WriteLine(" - " & ergebniss(i2)) Next
Geht mit Sicherheit noch kürzer und einfacher. Viele Grüße Maik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 23. Nov. 2010 20:33 <-- editieren / zitieren --> Unities abgeben:
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 24. Nov. 2010 20:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Mit dem entfernten Semikolon trat im nächsten Datensatz ein neuer Fehler auf. Dort war ein einzelnes Anführungszeichen im Text. Das hatte so keinen Wert und ganz nebenbei wurde erwähnt, daß der Export auch als XML möglich wäre.
------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |