none
Exportar DataGridView a Excel RRS feed

  • Pregunta

  • Buenas Muchach@s

    Actualmente estoy haciendo una aplicación sencilla para buscar datos en una BD de sql server en red y explortarlos a excel (sé que de excel se puede importar tambien en la pestaña datos, pero no es lo que busco)

    Tengo el siguiente código pero tengo 2 problemas.

    Primero: me exporta a excel y me crea el archivo con los datos PERO, no me trae la cabecera del datagrid

    Segundo: una de las columnas que exporta del datagrid contiene datos que empiezan con un cero, ejemplo: 05938745637385757 y al exportarlo a excel me lo exporta como Numero (5938745637385757) y yo necesito que lo exporte como texto pues necesito el codigo completo:

    Private Sub BtnExportar_Click(sender As Object, e As EventArgs) Handles BtnExportar.Click
            Dim xlApp As Excel.Application
            Dim xlWorkBook As Excel.Workbook
            Dim xlWorkSheet As Excel.Worksheet
            Dim misValue As Object = System.Reflection.Missing.Value
            Dim i As Integer
            Dim j As Integer

            xlApp = New Excel.Application
            xlWorkBook = xlApp.Workbooks.Add(misValue)
            xlWorkSheet = xlWorkBook.Sheets("Hoja1")

            For i = 0 To DgvCompras.RowCount - 2
                For j = 0 To DgvCompras.ColumnCount - 1
                    xlWorkSheet.Cells(i + 1, j + 1) = _
                        DgvCompras(j, i).Value()

                Next
            Next
            Dim ruta As String
            ruta = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
            xlWorkSheet.SaveAs(ruta & "\Compras.xlsx")
            xlWorkBook.Close()
            xlApp.Quit()

            releaseObject(xlApp)
            releaseObject(xlWorkBook)
            releaseObject(xlWorkSheet)
            
        End Sub

        Private Sub releaseObject(ByVal obj As Object)
            Try
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
                obj = Nothing
            Catch ex As Exception
                obj = Nothing
            Finally
                GC.Collect()
            End Try
        End Sub

    alguien me puede ayudar?

    Gracias de antemano.

    lunes, 29 de enero de 2018 0:53

Respuestas

  • Bueno lo de la columna con numeros a texto, ya lo arreglé cambiando las propiedades del excel para esa columna con el siguiente codigo:

    With xlWorkSheet.Range("A1:A1048576")
                .NumberFormat = "@"
    
    
            End With

    donde el @ le quita la propiedad de numero a la celda.

    lunes, 29 de enero de 2018 1:51
  • Te faltaría recorrer las columnas del DGV y agregarlas como cabeceras  ej

      For i As Integer = 1 To DGVCompras.Columns.Count -1
                    xlWordSheet.Cells.Item(1, i) = DGVCompras.Columns(i - 1).Name.ToString
                Next

    No he comprobado aún el resto de tu código

    Saludos

    Edito, ten encuenta que de acuerdo a donde posiciones la cabecera deberás modificar el valor para comenzar a agregar los rows


    ARA San Juan 44 HEROES     ‗‗‗‗­|||||‗‗‗‗‗



    lunes, 29 de enero de 2018 3:14

Todas las respuestas

  • Bueno lo de la columna con numeros a texto, ya lo arreglé cambiando las propiedades del excel para esa columna con el siguiente codigo:

    With xlWorkSheet.Range("A1:A1048576")
                .NumberFormat = "@"
    
    
            End With

    donde el @ le quita la propiedad de numero a la celda.

    lunes, 29 de enero de 2018 1:51
  • Te faltaría recorrer las columnas del DGV y agregarlas como cabeceras  ej

      For i As Integer = 1 To DGVCompras.Columns.Count -1
                    xlWordSheet.Cells.Item(1, i) = DGVCompras.Columns(i - 1).Name.ToString
                Next

    No he comprobado aún el resto de tu código

    Saludos

    Edito, ten encuenta que de acuerdo a donde posiciones la cabecera deberás modificar el valor para comenzar a agregar los rows


    ARA San Juan 44 HEROES     ‗‗‗‗­|||||‗‗‗‗‗



    lunes, 29 de enero de 2018 3:14