Excel Export mit Bedingter Formatierung aus DataGridView

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Excel Export mit Bedingter Formatierung aus DataGridView

    Hallo zusammen,

    ich Exportiere mit folgendem Code den Inhalt eines DataGridView nach Excel. Ich möchte dem aber jetzt auch noch eine Bedingte Formatierung mit geben. Also das bei der letzten Spalte alle Zellen deren <=10 sind grün werden, Zellen die Zwischen 10 und 20 sind gelb und alles was dadrüber ist rot.
    Kann mir einer sagen wie man so was macht und/oder ob das überhaupt möglich ist?

    VB.NET-Quellcode

    1. Try
    2. Dim Excel As Microsoft.Office.Interop.Excel.Application
    3. Dim EXMappe As Microsoft.Office.Interop.Excel.Workbook
    4. Dim EXBlatt As Microsoft.Office.Interop.Excel.Worksheet
    5. Dim AZ As Integer
    6. ' neue Instanz von Excel erstellen und ggf. sofort anzeigen
    7. Excel = New Microsoft.Office.Interop.Excel.Application
    8. System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
    9. Excel.Visible = Not FillHiddenMode
    10. ' neue Mappe hinzufügen
    11. EXMappe = Excel.Workbooks.Add()
    12. ' aktuelles Blatt anzeigen
    13. EXBlatt = CType(EXMappe.ActiveSheet, Microsoft.Office.Interop.Excel.Worksheet)
    14. With DataGridView1
    15. ' Spaltenüberschriften übertragen
    16. For Spalte As Integer = 0 To .Columns.Count - 1
    17. EXBlatt.Cells(1, Spalte + 1) = .Columns(Spalte).HeaderText
    18. Next
    19. ' Anzahl Datenzeilen
    20. AZ = .Rows.Count
    21. If .AllowUserToAddRows = True Then
    22. AZ = AZ - 1
    23. End If
    24. ' ' Datenzeilen übertragen
    25. For Zeile As Integer = 0 To AZ - 1
    26. For Spalte As Integer = 0 To .Columns.Count - 1
    27. EXBlatt.Cells(Zeile + 2, Spalte + 1) = .Rows(Zeile).Cells(Spalte).Value.ToString
    28. Next
    29. Next
    30. End With
    31. ' Excel jetzt anzeigen
    32. If FillHiddenMode Then Excel.Visible = True
    33. Catch ex As Exception
    34. MsgBox("Error!" & vbCrLf & ex.Message, MsgBoxStyle.Exclamation)
    35. End Try
    Zunächst würde ich diese Abfrage in Excel machen und testen, dann das Resultat von VB aus senden.
    Kannst ja mal probieren und berichten.
    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!
    In Excel selbst führst musst Du diese Formatierng durchführen. Da hast Du auch die entsprechende Hilfe.
    Gehe auf Einfügen -> Funktion und suche bei WENN weiter.

    Hab mal fix gegoogelt:
    Farben in Formeln
    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!

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

    Ich habe mich grade gefragt, ob es dir darum geht, in den Excel Zellen die Eigenschaft der
    bedingten Formatierung einzusetzen, oder
    ob du einfach nur abhängig von deinen Werten, die du einträgst, die Zellen färben willst.

    Für Punkt 1 würde ich ein Excel Makro aufnehemen während ich die bedingte Formatierung
    auf die Zellen setze.

    Für Punkt 2 würde ich in deinem bereits vorhandenen Programm die Werte überprüfen
    und dann mit Font.Color oder ähnliches die Zellentexte färben.
    ob du einfach nur abhängig von deinen Werten, die du einträgst, die Zellen färben willst.
    Genau das will ich.

    Für Punkt 2 würde ich in deinem bereits vorhandenen Programm die Werte überprüfen
    und dann mit Font.Color oder ähnliches die Zellentexte färben.
    Kannst du mir sagen wie ich so was machen kann? Und wie ist das dann beim Export? wird die Formatierung übernommen?
    Probier doch zunächst mal, eine Formel zu übertragen:
    =MAX(A1:A2)
    oder so
    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!