Export DGV nach Excel geht, aber Zahlen werden komisch ausgegeben...

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von michl75.

    Export DGV nach Excel geht, aber Zahlen werden komisch ausgegeben...

    Hallo,
    ich lasse mit folgenden Code den Inhalt eines Datagridview in ein Excel Sheet exportieren.
    Das funktioniert auch ganz gut, aber in einer Spalte... wo nur Zahlen enthalten sind, lange Artikelnummern... werden diese falsch ausgegeben.

    Ich weis mir gerade keinen Rat mehr und bitte euch um eure Hilfe! … Vielleicht kann mir einer sagen woran es liegt.

    Anbei Code und auch zwei Bilder... _01 Tatsächlich, _02 Ausgabe...

    VB.NET-Quellcode

    1. Public Function dgvToExcel(ByVal dgv As DataGridView, Optional ByVal FillHiddenMode As Boolean = True) As Boolean
    2. Try
    3. Dim Excel As Excel.Application ' Verweis auf Excel-Application
    4. Dim EXMappe As Excel.Workbook ' Excel Arbeitsmappe
    5. Dim EXBlatt As Excel.Worksheet ' Excel Blatt ( Die angezeigte Tabelle)
    6. Dim AZ As Integer ' Nimmt die Zeilenanzahl auf
    7. ' neue Instanz von Excel erstellen und ggf. sofort anzeigen
    8. Excel = New Excel.Application()
    9. Excel.Visible = Not FillHiddenMode
    10. ' neue Mappe hinzufügen
    11. EXMappe = Excel.Workbooks.Add()
    12. ' aktuelles Blatt anzeigen
    13. EXBlatt = EXMappe.ActiveSheet
    14. With dgv
    15. ' Spaltenüberschriften übertragen
    16. For Spalte As Integer = 0 To .Columns.Count - 1
    17. EXBlatt.Cells(1, Spalte + 1).Value = .Columns(Spalte).HeaderText
    18. Next
    19. ' Anzahl Datenzeilen
    20. AZ = .Rows.Count
    21. If .AllowUserToAddRows = True Then
    22. ' Leerzeile abziehen
    23. AZ = AZ - 1
    24. End If
    25. ' Datenzeilen übertragen
    26. For Zeile As Integer = 0 To AZ - 1
    27. For Spalte As Integer = 0 To .Columns.Count - 1
    28. EXBlatt.Cells(Zeile + 2, Spalte + 1).Value() =
    29. .Rows(Zeile).Cells(Spalte).Value.ToString
    30. Next
    31. Next
    32. End With
    33. ' Excel jetzt anzeigen
    34. If FillHiddenMode Then Excel.Visible = True
    35. Return True
    36. Catch ex As Exception
    37. ' Fehler
    38. MsgBox("Fehler beim Übertragen der Daten nach Excel!" & vbCrLf &
    39. ex.Message, MsgBoxStyle.Exclamation)
    40. Return False
    41. End Try
    42. End Function


    Gruß
    Michl
    Bilder
    • vb_01.PNG

      5,36 kB, 414×113, 74 mal angesehen
    • vb_02.PNG

      4,9 kB, 387×102, 80 mal angesehen
    *Bitte keine unnötigen Vollzitate*

    Hallo,

    danke für deine Antwort. Die Formatierung müsste aber dann bevor die Cell in Excel befüllt wird formatiert werden, richtig?

    Danach würde er na die Expotential-Zahl so als Text ausgeben...

    Danke & Gruß

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Tipp in Excel die Werte von Hand ein und Du siehst, dass Excel sie als Zahl interpretiert.
    Willst Du eine andere Formatierung, musst du es Excel auch sagen:

    Rng.Style.Numberformat.Format = "@" 'für Range, Format = text
    ws.Column(0).Style.Numberformat.Format = "general" 'für Worksheet-Column, Format ist Standard
    ws.Column(1).Style.Numberformat.Format = "#,##0.00 €" 'für Worksheet-Column, Format manuell gesetzt für Währung Euro

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dksksm“ ()