Visual Basic.NET - Exportar Datagridview a excel condicionando celda

   
Vista:

Exportar Datagridview a excel condicionando celda

Publicado por Juan Carlos (9 intervenciones) el 06/06/2015 00:29:31
Hola.

Quisiera saber si me pueden ayudar, tengo un botón en una aplicación en VB:NET que exporta mi DATAGRIDVIEW a EXCEL, todo hasta la exportación esta muy bien PERO me piden que una columna de Excel este condicionada.

Condicionada me refiero a : por ejemplo tengo estos datos que me los arroja el DATAGRIDVIEW:

ID | NOMBRE | EDAD
1 CARLOS 25
2 JOSE 18
3 DIEGO 31
4 ALFONSO 45

al exportarlos a Excel todo bien, cada dato acomodado en fila y columna. La única condición que debe llevar es la siguiente:
en la columna EDAD deben marcarse, resaltarse o colorearse de ROJO la celda o el texto si es MAYOR a 30 años, como en el ejemplo DIEGO y ALFONSO deben exportarse salir en la hoja de Excel ya con formato y condición.

utilizo este código pero no se como hacerle para que haga lo que pido:

Dim App As New Excel.Application
Dim WB As Excel.Workbook
Dim WS As New Excel.Worksheet

WB = App.Workbooks.Add()
WS = WB.ActiveSheet
ProgressBar1.Value = 0
ProgressBar1.Maximum = DataGridView1.RowCount

For i As Integer = 1 To DataGridView1.Columns.Count
WS.Cells.Item(1, i) = DataGridView1.Columns(i - 1).Name.ToString
Next
For i As Integer = 0 To DataGridView1.Rows.Count - 1
For j As Integer = 0 To DataGridView1.Columns.Count - 1
WS.Cells.Item(i + 2, j + 1) = DataGridView1.Rows(i).Cells(j).Value
ProgressBar1.Value = i


If WS.Cells.Item(j + 2, 7) > 30 Then
WS.Cells.Item(i + 2, 7).Font.Color = Color.Red
End If

Next
Next
With WS
With .Range(.Cells(1, 1), .Cells(1, DataGridView1.ColumnCount)).Font
.Color = Color.White
.Bold = 1
.Size = 12
End With
.Range(.Cells(1, 1), .Cells(1, DataGridView1.ColumnCount)).Interior.Color = Color.Black
.Columns.AutoFit()
.Columns.HorizontalAlignment = 2
App.Application.Visible = True
WS.Protect("OcGripV3")
End With

les agradeceré mucho si por lo menos me dan algunas pistas.

saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de giancarlo

Exportar Datagridview a excel condicionando celda

Publicado por giancarlo giangbd5@hotmail.com (280 intervenciones) el 06/06/2015 17:48:14
Al parecer tu código esta bien, solo que estas seleccionando la celda incorrecta:

1
2
3
If WS.Cells.Item(j + 2, 7) > 30 Then
WS.Cells.Item(i + 2, 7).Font.Color = Color.Red
End If

En
1
If WS.Cells.Item(j + 2, 7) > 30 Then

deberia decir:
1
If WS.Cells.Item(i + 2, 7) > 30 Then
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Exportar Datagridview a excel condicionando celda

Publicado por Juan Carlos sistemas@lapotranca.com.mx (9 intervenciones) el 06/06/2015 18:22:24
Hola, gracias por responder.

hice la recomendacion que me sugieres y nada, manda un mensaje de error diciendo: el operador > no esta permitido en el range.

no entiendo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de giancarlo

Exportar Datagridview a excel condicionando celda

Publicado por giancarlo giangbd5@hotmail.com (280 intervenciones) el 06/06/2015 18:26:09
cierto, se me habia pasado, al usar WS.Cells.Item(j + 2, 7) usas como referencia la celda del gridview, lo que necesitas es una de suspropiedades, aumentarle .value y porsiacaso convertirlo:
1
convert.toint32(WS.Cells.Item(j + 2, 7).value)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar