Exportar Datagridview a Word

Hola amigos, en esta entrada vamos a exportar un Datagridview a una tabla de Word haciendo referencia a las librerias de Microsoft Office que en la mayoria de pcs Windows incluyen. Este ejemplo se basa en el ejemplo propuesto en:http://www.elnaufragodelared.com/2012/09/exportar-de-datagridview-word-en-visual.html

Aquí presento el código completo:


Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'GENERAR Y RELLENAR EL DATAGRIDVIEW
        Try
            Dim n As Integer = 6 ' cualquier valor para sumar
            Dim cantidad(n) As Integer 'matriz para almacenar hasta n valores
            Dim valor As Double = 0.18 'valor de un articulo en común ....para ejemplificar
            Dim subtotal(n) As Double ' matriz que almacena los subtotales de cada compra
            Dim suma As Double 'total de la suma de la columna subtotal
            For i As Integer = 0 To n - 1
                cantidad(i) = i 'Val(InputBox("Ingresar cantidad Nº" & i + 1)) 'Entrada manual
            Next
            For i As Integer = 0 To n - 1
                subtotal(i) = cantidad(i) * valor
                suma = suma + subtotal(i)
            Next
            grid1.Rows.Add(n + 1) 'numero de filas del grid
            For r As Integer = 0 To n - 1
                grid1.Item(0, r).Value = r + 1
                grid1.Item(1, r).Value = Format(cantidad(r), "0.00")
                grid1.Item(2, r).Value = Format(valor, "0.00")
                grid1.Item(3, r).Value = Format(subtotal(r), "0.00")
                grid1.Item(2, n).Value = "TOTALES="
                grid1.Item(3, n).Value = Format(suma, "0.00")
            Next
        Catch ex As KeyNotFoundException
            MessageBox.Show("Error de concurrencia:" & vbCrLf & ex.Message)
        End Try
    End Sub
    Private Sub BtnExpWord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnExpWord.Click
        Dim objWordApp As Object
        Dim objWordDoc As Object
        objWordApp = CreateObject("Word.Application")
        objWordDoc = objWordApp.documents.add()
        objWordDoc.tables.add(objWordDoc.range(0, 0), 7, 4)
        With objWordDoc.tables(1)
            .borders.InsideLineStyle = 1
            .borders.OutsideLineStyle = 1
            For i As Integer = 0 To 6
                .rows(i + 1).cells(1).range.text = grid1.Item(1, i).Value 'grid1.Rows(i + 1).Cells("n").Value
                .rows(i + 1).cells(2).range.text = grid1.Item(2, i).Value 'grid1.Rows(i + 2).Cells("Cantidad").Value
                .rows(i + 1).cells(3).range.text = grid1.Item(3, i).Value 'grid1.Rows(i + 3).Cells("Valor").Value
            Next
        End With
        objWordApp.visible = True
        objWordApp = Nothing
    End Sub
End Class

De acuerdo al ejemplo corremos el programa y obtenemos:




Mi ejemplo
https://drive.google.com/open?id=0B-UGWA03tc5ZQjdXaXZyNHhCRWc

Y llegamos al final, un gusto y comentarios y/o preguntas a mi correo, nos vemos


Comentarios

Entradas populares de este blog

Imprimir directamente ReportViewer a impresora predeterminada

DevComponents DotnetBar 12.5.0.2

Metodo Iterativo Gauss-Seidel en Visual Basic