Funcion para pasar los datos de un DataGridView a Excel en Visual Basic .NET

3 comentarios
Aquí os dejo la forma de pasar los datos de un DataGridView a Excel en VISUAL BASIC .NET



''' <summary>
    ''' Funcion que exporta los datos de un DataGridView a un documento Excel
    ''' </summary>
    ''' <param name="Titulo">Titulo del Excel</param>
    ''' <param name="DataGrid">Grid con los datos a Mostrar</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Shared Function ExportarGridADocumentoExcel(ByVal Titulo As String, _
                                                ByVal DataGrid As DataGridView) As Boolean

        'Creamos las variables
        Dim exApp As New Microsoft.Office.Interop.Excel.Application
        Dim exLibro As Microsoft.Office.Interop.Excel.Workbook
        Dim exHoja As Microsoft.Office.Interop.Excel.Worksheet

        Try
            'Añadimos el Libro al programa, y la hoja al libro
            exLibro = exApp.Workbooks.Add
            exHoja = exLibro.Worksheets.Add()

            ' ¿Cuantas columnas y cuantas filas?
            Dim NCol As Integer = DataGrid.ColumnCount
            Dim NRow As Integer = DataGrid.RowCount

            'Aqui recorremos todas las filas, y por cada fila todas las columnas y vamos escribiendo.
            For i As Integer = 1 To NCol
                exHoja.Cells.Item(3, i) = DataGrid.Columns(i - 1).Name.ToString
            Next

            For Fila As Integer = 0 To NRow - 1
                For Col As Integer = 0 To NCol - 1
                    exHoja.Cells.Item(Fila + 4, Col + 1) = DataGrid.Rows(Fila).Cells(Col).Value
                Next
            Next

            'Titulo en negrita, Alineado al centro y que el tamaño de la columna se ajuste al texto
            exHoja.Rows.Item(3).Font.Bold = 1
            exHoja.Rows.Item(3).HorizontalAlignment = 3
            exHoja.Columns.AutoFit()

            'Aplicación visible
            exApp.Application.Visible = True

            exHoja = Nothing
            exLibro = Nothing
            exApp = Nothing

            ExportarGridADocumentoExcel = True
        Catch ex As Exception
            MessageBox.Show(" ERROR : " & ex.Message & " --UtilForm.ExportarGridADocumentoExcel",   "Administrador", MessageBoxButtons.OK, MessageBoxIcon.Error)
            ExportarGridADocumentoExcel = False
        End Try
    End Function

Espero que os sirva de ayuda

3 comentarios:

no sirve!

Anónimo
5 de diciembre de 2012, 8:35 comment-delete

Pues a mi me funciona perfecto

5 de diciembre de 2012, 9:28 comment-delete

muchas gracias me ayudo muchísimo tu procedimiento para realizar un trabajo de pilas para un examen te lo adjunto por si alguien desea utilizarlo :-)


Public Class Form1
Dim i, j, k, l As Integer
Dim arreg(5, i) As String
Dim busq() As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
base.ColumnCount = 5
End Sub

Private Sub add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles add.Click
'j = j + 1
'For j = 0 To 5
If control.Text <> "" Then
i = i + 1
ReDim Preserve arreg(5, i)
arreg(1, i) = control.Text
arreg(2, i) = nombre.Text
base.Rows.Add(control.Text, nombre.Text, apellido.Text, localidad.Text, carrera.Text)
control.Text = ""
nombre.Text = ""
apellido.Text = ""
localidad.Text = ""
carrera.Text = ""
Me.control.Focus()
Else
MsgBox("Escriba el valor a ingresar")
End If
'Next (i)
End Sub

Private Sub evaluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pruebas.Click
Dim NCol As Integer = base.ColumnCount
Dim NRow As Integer = base.RowCount
Dim columna As String
Dim colim As String
For h As Integer = 1 To NCol
columna = base.Columns(h - 1).Name.ToString

Next

For Fila As Integer = NRow - 2 To 0 Step -1
For Col As Integer = NCol - 1 To 0 Step -1
colim = base.Rows(Fila).Cells(Col).Value
If Col = 5 Then

MsgBox("la carrera del alumno es " & colim)
Else
MsgBox("el dato seguro es " & colim)
End If
Next
Next
'MsgBox(" ncol " & NCol & " y nrow " & NRow)


End Sub

Private Sub pilas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pilas.Click
Dim NCol As Integer = base.ColumnCount
Dim NRow As Integer = base.RowCount
Dim columna As String
Dim colim As String
'Dim conti As String
Dim lopila As Stack
loPila = New Stack()
For h As Integer = 1 To NCol
columna = base.Columns(h - 1).Name.ToString

Next

For Fila As Integer = 0 To NRow - 2
For Col As Integer = 0 To NCol - 1
colim = base.Rows(Fila).Cells(Col).Value
' MsgBox(" colim es : " & colim)
lopila.Push(colim)

' MsgBox("el dato seguro es " & colim)
' MsgBox("estas son las pilas: " & lopila.Pop)



Next
Next

While lopila.Count > 0
' For conti As Integer = 0 To 5
MsgBox("CARRERA " & lopila.Pop & " LOCALIDAD " & lopila.Pop & " APELLIDO " & lopila.Pop & " NOMBRE " & lopila.Pop & " CONTROL " & lopila.Pop)
'Label6.Text = Label6.Text & " carrera " & lopila.Pop & " localidad " & lopila.Pop & " apellido " & lopila.Pop & " nombre " & lopila.Pop & " control " & lopila.Pop
' MsgBox("siguiente usuario")
' Next
End While

End Sub

End Class

el datagrid se llama base
muchas muchas GRACIAS

11 de diciembre de 2012, 1:00 comment-delete
Publicar un comentario

Related Posts Plugin for WordPress, Blogger...
Copyright 2011 INFORMATICUCHO.
Blogger Template by Noct.