*.csv einlesen - Probleme mit Nachkommastellen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von rumbleDom.

    *.csv einlesen - Probleme mit Nachkommastellen

    Hallo, ich habe ein kleines Script um eine *.csv in ein DataGridView einzulesen:
    Mein Problem ist nun, dass im DataGridView keine Nachkommastellen angezeigt werden.

    Beispielsweise erscheint anstatt 45,35 -> 4535.
    Die csv Datei ist folgendermaßen aufgebaut: 2011-01-25,45.35,46.26,44.90,45.51,1188000,45.51


    Habt Ihr vielleicht eine Idee wie ich dieses Problem lösen kann?

    Schon einmal besten Dank für Eure Bemühungen, viele Grüße
    ms01
    Bilder
    • code01.jpg

      74,23 kB, 944×237, 387 mal angesehen
    Wenn in der csv es richtig steht, Dezimaltrennzeichen ein Punkt, wieso hast du im Beispiel dann ein Komma? Das ist im allgemeinen ein Tausendertrennzeichen und wird wohlmöglich rausgefiltert weils unnötig ist.
    Lass doch den Punkt, dann wird es sicher auch im DGV richtig angezeigt.
    Hallo Dodo,
    ein Punkt wäre mir auch recht, aber es wird gar nichts angezeigt. Ich könnte mir vorstellen, dass der Punkt in meinem DataGridView oder vorher in dem DataSet als "tausender Trennzeichen" interpretiert wird und somit weggelassen wird!

    Wüsstest du/ihr was ich da machen könnte um das Problem zu lösen!?
    Ach ich habe jetzt erst das Bild gesehen, du machst es über den OLEDB Connector?? Warum das denn? CSV ist doch so ein Simples Format

    VB.NET-Quellcode

    1. Dim Datei As As String() = File.ReadAllLines("datei.csv")
    2. Dim dt As New DataTable("Name")
    3. Dim bFirstHeader As Boolean = False
    4. For Each sLine As String In Datei
    5. Dim dtRow As DataRow = dt.NewRow()
    6. Dim sColumn As String() = sLine.Split(","c)
    7. For i As Integer = 0 To sColumn.Length - 1
    8. If bFirstHeader Then
    9. dtRow(i) = sColumn(i)
    10. Else
    11. dt.Columns.Add(sColumn(i))
    12. End If
    13. Next
    14. If bFirstHeader Then dt.Rows.Add(dtRow) Else bFirstHeader = True
    15. Next
    16. DataGridView1.DataSource = dt
    Hallo,
    erst einmal vielen Dank für das Code Beispiel! Den Code habe ich in mein "Projekt" eingefügt und folgende Frage:

    Wenn ich versuche zu compilieren bekomme ich die Fehlermeldung, dass das Objekt "File" nicht deklariert ist.
    Die erste Zeile habe ich nun geändert in: My.Computer.FileSystem.ReadAllText("Pfad\E000A1EWWW0.csv"

    Dieser Code gibt mir die Fehlermedung: "Der Wert vom Typ "String" kann nicht in 1-dimensionales Array von String konvertiert werden.
    Die Funktion "ReadAllLines" wird hier allerdings nicht unterstützt.
    Jo, weil File auch zu der Klasse System.IO gehört. Das hätte man gefunden indem man bei sowas google öffnet und einfach folgendes eintippt

    "File.ReadAllLines msdn"

    MSDN ist die Referenz für die .NET Klassen, dort sind alle Klassen, Methoden und Funktionen ausführlich beschrieben sogar oftmals mit Beispielen.
    @dodo
    Warum soll er es denn nicht über den OleDB Connector machen? Hatte mal einen Fall bei dem ich einen haufen Datensätze einlesen musste, dabei war es über OleDB um Welten schnell als über die Schleifen. Fall er natürlich nicht viele Datensätze besitzt macht es keinen Unterschied, da geb ich dir Recht.


    Falls du es doch noch einmal probieren möchtest mit dem OleDB Connector, dann würd ich mir an deiner Stelle die Schema.ini anschauen, denke das könnte dein Problem vielleicht beheben.



    Gruß