DataGridview Probleme mit dem Anzeigen langer Zahlen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von xored.

    DataGridview Probleme mit dem Anzeigen langer Zahlen

    Guten Morgen,

    ich habe ein kleines Problem. Ich habe ein Datagridview, welches ich mit einer XLSX-Datei befülle. Soweit so gut.
    Nun habe ich Zahlen in diesem Format:

    00340439995753999999

    Im Datagridview angezeigt bekomme ich dann:


    3,40439995754E+17

    Das gleiche Problem habe ich in Excel auch, dort kann ich aber die Formatierung der Zelle auf "Text" stellen, dann klappt es.
    Wie formatiere ich die Zelle im Datagridview korrekt, sodass mir diese lange Zahl angezeigt werden kann?

    Probiert hatte ich schon folgendes:

    VB.NET-Quellcode

    1. DataGridOutput.Columns("Tracking Numbers").DefaultCellStyle.Format = "N0"


    Das macht es aber nicht viel besser:

    340.439.995.754.000.000

    Falls es hilft, so lese ich die Datei:

    VB.NET-Quellcode

    1. conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" & "data source='" & OpenFileDialog1.FileName & "';Extended Properties=Excel 8.0;")
    2. da = New OleDbDataAdapter("select * from [Worksheet$]", conn)
    3. conn.Open()
    4. ds.Clear()
    5. da.Fill(ds)
    6. DataGridOutput.DataSource = ds.Tables(0)
    7. conn.Close()


    Hat noch jemand eine Idee? Wichtig ist vor allem, dass die beiden Nullen am Anfang bestehen bleiben, da es hier um Sendungsnummern geht.
    Danke für jeden Tipp.

    Grüße,
    xored

    Edit: Ich habe nun mal geschaut und gesehen, dass der Datentyp der Spalte Double ist. Wenn man diesen auf String ändern könnte, würde es vielleicht klappen.

    Edit2:
    Kann geschlossen werden. Habe es nun geschafft den Typ in String zu ändern:

    VB.NET-Quellcode

    1. conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" & "data source='" & OpenFileDialog1.FileName & "';Extended Properties=Excel 8.0;")
    2. da = New OleDbDataAdapter("select * from [Worksheet$]", conn)
    3. conn.Open()
    4. ds.Clear()
    5. da.Fill(ds)
    6. Dim Klon As DataTable = ds.Tables(0).Clone()
    7. Klon.Columns(0).DataType = GetType(String)
    8. For Each row As DataRow In ds.Tables(0).Rows
    9. Klon.ImportRow(row)
    10. Next
    11. DataGridOutput.DataSource = Klon
    12. conn.Close()


    Meine Website:
    www.renebischof.de

    Meine erste App (Android):
    PartyPalooza

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „xored“ ()

    @xored Ist es erforderlich, dass die Werte den Type "Zahl" haben?
    Kann es nicht auch ein Wert vom Type String sein?
    Ansonsten formatierst Du den Wert im CellFormatting-Event (WinForm).
    learn.microsoft.com/de-de/dotn…g?view=windowsdesktop-7.0
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hatte das Thema eigentlich schon als erledigt markiert, aber danke :) Die Lösung mit dem String hatte mir schon geholfen.
    Wäre mit deiner Eventmethode wahrscheinlich eleganter gewesen, aber so gings nun auch.

    Grüße


    Meine Website:
    www.renebischof.de

    Meine erste App (Android):
    PartyPalooza