Announcement

Collapse
No announcement yet.

DataGridView-Hintergrundfarbe in Excel übernehmen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DataGridView-Hintergrundfarbe in Excel übernehmen

    Ich habe nun schon viele Beiträge über Google gefunden zu dem Thema, aber irgendwie widersprechen sich alle!
    Geht es überhaupt, VB.NET-Farben in irgendeiner Art in Excel anzuzeigen? Oder kann man in Excel wirklich nur ColorIndex mit 1-50 ansprechen und Farben nicht in diesen Index umwandeln?

    Ich habs wie folgt versucht:
    xlZelle.Cells(i + 2, spaltenzahl).Interior.ColorIndex = dgv.Rows(i).Cells(j).Style.BackColor
    Seltsamerweise bekomme ich die Meldung: Methoden mit System.Color-Parametern oder Rückgabetyp können nicht über IDispatch aufgerufen werden
    Da verstehe ich nur Bahnhof!

    Ich habe auch versucht die Farbe mit .ToArgb umzuwandeln oder mit Drawing.ColorTranslator.ToOle(...)
    Da lautet die Fehlermeldung: Ungültiger Index. (Ausnahme von HRESULT: 0x8002000B (DISP_E_BADINDEX))

    Wenn jemand es geschafft hat sowas zu programmieren, wäre ich über Hilfe sehr froh!

  • #2
    Hallo,
    ich habs wie folgt gemacht....


    [highlight=vbnet]
    Dim MyColor As Color
    MyColor = Color.Yellow
    Dim MyColorRGB As Integer
    MyColorRGB = RGB(MyColor.R, MyColor.G, MyColor.B)
    .ActiveCell.Interior.Color = MyColorRGB
    [/highlight]

    Comment


    • #3
      Danke! Das funktioniert wirklich!
      Ich habs grad probiert mit
      xlZelle.Cells(i + 2, spaltenzahl).Interior.Color = RGB(Color.LightGray.R, Color.LightGray.G, Color.LightGray.B)

      Jetzt muss ich noch Color.LightGray durch BackColor ersetzen und hoffe dass das genauso gut klappt!

      Comment


      • #4
        Falls andere mal danach suchen und hier landen:

        Man kann auch definieren, dass bei zB hellgrauen Spalten die Hintergrundfarbe ignoriert wird:
        If Not dgv.Rows(i).Cells(j).InheritedStyle.BackColor = Color.WhiteSmoke Then
        xlZelle.Cells(i + 2, spaltenzahl).Interior.Color = RGB(dgv.Rows(i).Cells(j).Style.BackColor.R, dgv.Rows(i).Cells(j).Style.BackColor.G, dgv.Rows(i).Cells(j).Style.BackColor.B)
        End If


        Aber alle Zellen für die keine Farbe definiert wurde werden in Excel schwarz angezeigt!
        Das muss man filtern mit:
        If Not dgv.Rows(i).Cells(j).Style.BackColor = Color.Empty Then

        Comment

        Working...
        X