Visual Basic - Dar formato al exportar DataGriedView a Excel

Life is soft - evento anual de software empresarial
   
Vista:

Dar formato al exportar DataGriedView a Excel

Publicado por Ruddy (2 intervenciones) el 09/12/2014 21:27:39
Hola, encontré un código para exportar los valores de una DataGridView a Excel, todo bien, pero mi jefe quiere que se agregue un espacio cuando una row cambia de valor, la consulta SQL está ordenada por usuarios, entonces por ejemplo lista 5 rows de "Pedrito" y cuando cambia a "Juanito" quiere que entre esas dos Rows quede un espacio en blanco, la verdad que no se como hacerlo, les dejo el código. Y que en ese espacio en blanco ponga cuantos "Juanito" listó. :/

(PD: VarGrillaRutina es una variable que toma el nombre de la DataGridView de turno, lo hice para no escribir el mismo código para cada grilla.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
'Rutina que genera un archivo Excel desde la DataGridView, VarGrillaRutina trae el valor de la grilla desde el boton "generar informe". 
    Public Sub Exportar_Excel(ByVal dgv As DataGridView, ByVal pth As String)
 
        ProgressBarEjec.Visible = True
        ProgressBarEjec.Value = 20
 
 
        Dim xlApp As Object = CreateObject("Excel.Application")
        'crear una nueva hoja de calculo 
        Dim xlWB As Object = xlApp.WorkBooks.add
        Dim xlWS As Object = xlWB.WorkSheets(1)
 
        ProgressBarEjec.Value = 40
 
        'exportamos los caracteres de las columnas 
        For c As Integer = 0 To VarGrillaRutina.Columns.Count - 1
            xlWS.cells(1, c + 1).value = VarGrillaRutina.Columns(c).HeaderText
        Next
 
        ProgressBarEjec.Value = 60
 
        'exportamos las cabeceras de columnas 
        For r As Integer = 0 To VarGrillaRutina.RowCount - 1
            For c As Integer = 0 To VarGrillaRutina.Columns.Count - 1
                xlWS.cells(r + 2, c + 1).value = VarGrillaRutina.Item(c, r).Value
            Next
        Next
 
        ProgressBarEjec.Value = 80
 
        'guardamos la hoja de calculo en la ruta especificada 
        xlWB.saveas(pth)
        xlWS = Nothing
        xlWB = Nothing
        xlApp.quit()
        xlApp = Nothing
        ProgressBarEjec.Value = 100
 
        MessageBox.Show("Los datos han sido exportados satisfactoriamnete.", "Generador de Informes VidaCel",
        MessageBoxButtons.OK, MessageBoxIcon.Information)
 
        ProgressBarEjec.Visible = False
 
    End Sub

Ojalá puedan ayudarme

GRACIAS!!!
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 Andres Leonardo

Dar formato al exportar DataGriedView a Excel

Publicado por Andres Leonardo (698 intervenciones) el 10/12/2014 19:23:49
Yo guardaria la primera vez el valor variable NACTUAL= "Pedrito" lo importantes esidentificar cual es la columna que tiene esta valor , y la voy comparando en el registro, 2 , 3, 4, 5 con el siguiente registro 6 sera validado a NACTUAL(pedrito) va a ser diferente a Juanito , entonces le agrego 1 a la varianble del contador de celdas donde estoy dando los datos y los pego normalmente , loqeu hara que en la celda de la hoja salte uno y pegue los datos dejando un espacio y VOALA!!!!

Espero la ayuda te sirva si no ..conversemos a ver si puedo ayudarte mas.
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

Dar formato al exportar DataGriedView a Excel

Publicado por Ruddy (2 intervenciones) el 10/12/2014 21:37:26
Hola, gracias por tu comentario, hice algo con lo que me dijiste y funciona, ahora me encontré con otro problema
tengo el valor que quiero y quiero agregarlo a la DGV lo logro, pero no se como agregar mas valores, debe ser algo tonto
pero me he cabeceado tanto que estoy estancado en eso, te muestro el codigo (me falta un while que recorra la DGV completa)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Dim daRegAll2 As New SqlDataAdapter("select CONTRATO.CONTRATO_ID, NOMBRES+' '+APELLIDOS AS EJECUTIVA, RESPONSABLES_CONTRATOS.FECHA_CONTRATO, MADRE_NOMBRE+' '+MADRE_APELLIDO AS NOMBRE_MADRE, nombre_comuna AS Comuna, nombre_ciudad as REGION from RESPONSABLES_CONTRATOS inner join CONTRATO ON RESPONSABLES_CONTRATOS.CONTRATO_ID = CONTRATO.CONTRATO_ID inner join comuna on MADRE_COMUNA_ID = id_comuna inner join RESPONSABLE ON ID_RESPONSABLE = EJECUTIVA_CONTRATO  inner join ciudad on ciudad.id_ciudad = MADRE_CIUDAD_ID where ciudad.id_ciudad = " & ComboEjecAllRegion.SelectedValue & "and RESPONSABLES_CONTRATOS.FECHA_CONTRATO >= '" & VarDateTimeEjecAllDesde & "' AND  FECHA_CONTRATO <= '" & VarDateTimeEjecAllHasta & "'" & "ORDER BY EJECUTIVA, CONTRATO.CONTRATO_ID", Cn)
 
            Dim dsRegAll2 As New DataSet
            Dim VarNombre1 As String
            Dim VarNombre2 As String
            Dim VarRow As Integer = 0
            Dim contador As Integer = 1
 
 
            daRegAll2.Fill(dsRegAll2)
            DataGridEjecAll.DataSource = dsRegAll2.Tables(0)
 
            Dim tabla As DataTable = DirectCast(DataGridEjecAll.DataSource, DataTable)
            Dim row As DataRow = tabla.NewRow()
 
            'pruebas
            'Dim nombre As String = Convert.ToString(DataGridEjecAll.CurrentRow.Cells(3).Value)
 
            VarNombre1 = Convert.ToString(DataGridEjecAll.Rows(VarRow).Cells(1).Value)
            VarRow = VarRow + 1
            VarNombre2 = Convert.ToString(DataGridEjecAll.Rows(VarRow).Cells(1).Value)
 
            While VarNombre1 = VarNombre2
                contador = contador + 1
                VarRow = VarRow + 1
                VarNombre2 = Convert.ToString(DataGridEjecAll.Rows(VarRow).Cells(1).Value)
            End While
 
 
 
 
'en esta parte yo queria que se agregara:
'NUMERO DE CONTRATOS
'JUANITO: 9"
 
'Pero solo agrego
''JUANITO: 9"
 
 
            row("EJECUTIVA") = "CANTIDAD DE CONTRATOS"
            tabla.Rows.Add(row)
            row("EJECUTIVA") = VarNombre1 & ": " & contador
            tabla.Rows.Add(row)
            DataGridEjecAll.DataSource = tabla

Gracias!!!
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