Exportar Datagridview a Html
Siguiendo con exportaciones tambien existe la posibilidad de llevar la datagridview a una tabla en formato html. Fundamentalmente esta forma la encontre por ahi en la internet aunque ya no recuerdo en donde, la acople a mi ejemplo y lo expongo para que Uds tambien les sirva. Bueno continuando primeramente vamos a generar y llenar la grid, para luego crear una clase y ser llamada desde la aplicacion.
Para generar la grid al instanciar el formulario:
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
Creando la clase Html:
Luego una captura del programa:
Desde el boton Exportar Html:
Try
'Intentar generar el documento.
Dim titulos As New ArrayList()
Dim datostabla As New DataTable()
'Path que guarda el reporte en el escritorio de windows (Desktop).
Dim [OF] As New Html(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "\Reporte Ejemplo.html")
'Se obtienen los titulos del DataGridView y se crean las columnas de la tabla.
For Each item As DataGridViewColumn In grid1.Columns()
titulos.Add(item.HeaderText)
datostabla.Columns.Add()
Next
'Se crean las filas de la tabla.
For Each item As DataGridViewRow In grid1.Rows
Dim rowx As DataRow = datostabla.NewRow()
datostabla.Rows.Add(rowx)
Next
'Se pasan los datos del dataGridView a la tabla.
For Each item As DataGridViewColumn In grid1.Columns
For Each itemx As DataGridViewRow In grid1.Rows
datostabla.Rows(itemx.Index)(item.Index) = grid1(item.Index, itemx.Index).Value
Next
Next
[OF].ExportarDatosHTML(titulos, datostabla)
Process.Start([OF].xpath)
Catch ex As Exception
'Si el intento es fallido, mostrar MsgBox.
MessageBox.Show("No se puede generar el documento HTML.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Al ejecutar
El archivo se exporta al escritorio y se ejecuta inmediatamente. Nos vemos amigos en otra entrega, espero que les agrade, dejen sus comentarios y/o un G+ si asi gustan, Bye..
Para generar la grid al instanciar el formulario:
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
Creando la clase Html:
Imports System.IO
Imports System.Text
Imports System.Data
Public Class Html
Private w As StreamWriter
Private ruta As String
Public titulogrande As String
Public Property xpath() As String
Get
Return ruta
End Get
Set(ByVal value As String)
value = ruta
End Set
End Property
'Constructor que establece el path del archivo.
Public Sub New(ByVal path As String)
ruta = path
End Sub
'Exporta datos a un archivo HTML.
Public Sub ExportarDatosHTML(ByVal titulos As ArrayList, ByVal datos As DataTable)
Try
Dim fs As New FileStream(ruta, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)
w = New StreamWriter(fs)
Dim comillas As String = Char.ConvertFromUtf32(34)
Dim html As New StringBuilder()
html.Append("<!DOCTYPE html PUBLIC" & comillas & "-//W3C//DTD XHTML 1.0 Transitional//EN" & comillas & " " & comillas & "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" & comillas & ">")
html.Append("<html xmlns=" & comillas & "http://www.w3.org/1999/xhtml" & comillas & ">")
html.Append("<head>")
html.Append("<meta http-equiv=" & comillas & "Content-Type" & comillas & "content=" & comillas & "text/html;charset=utf-8" & comillas & "/>")
html.Append("<title>Reporte de Ejemplo</title>")
html.Append("</head>")
html.Append("<body>")
html.Append("<p><font face=" & comillas & "Tahoma" & comillas & "size=" & comillas & "6" & comillas & ">" + titulogrande + "</font></p>")
html.Append("<p><font face=" & comillas & "Tahoma" & comillas & "size=" & comillas & "3" & comillas & ">" + "Reporte de Ejemplo: " + Now.Date() + "</font></p>")
html.Append("</br>")
html.Append("<table CELLSPACING=0 CELLPADDING=5 border=2 BORDERCOLOR=" & comillas & "#000000" & comillas & " bgcolor=" & comillas & "#FFFFFF" & comillas & ">")
html.Append("<tr> <b>")
For Each item As Object In titulos
html.Append("<th>" & "<font face=" & comillas & "Tahoma" & comillas & "size=" & comillas & "2" & comillas & ">" & item.ToString() & "</font></th>")
Next
html.Append("</b> </tr>")
'Generando datos desde el DataGridView.
For i As Integer = 0 To datos.Rows.Count - 1
html.Append("<tr>")
For j As Integer = 0 To datos.Columns.Count - 1
html.Append("<td>" & "<font face=" & comillas & "Tahoma" & comillas & "size=" & comillas & "2" & comillas & ">" + datos.Rows(i)(j).ToString() & "</font></td>")
Next
html.Append("</tr>")
Next
html.Append("</body>")
html.Append("</html>")
w.Write(html.ToString())
w.Close()
Catch ex As Exception
Throw ex
End Try
End Sub
End Class
Imports System.Text
Imports System.Data
Public Class Html
Private w As StreamWriter
Private ruta As String
Public titulogrande As String
Public Property xpath() As String
Get
Return ruta
End Get
Set(ByVal value As String)
value = ruta
End Set
End Property
'Constructor que establece el path del archivo.
Public Sub New(ByVal path As String)
ruta = path
End Sub
'Exporta datos a un archivo HTML.
Public Sub ExportarDatosHTML(ByVal titulos As ArrayList, ByVal datos As DataTable)
Try
Dim fs As New FileStream(ruta, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)
w = New StreamWriter(fs)
Dim comillas As String = Char.ConvertFromUtf32(34)
Dim html As New StringBuilder()
html.Append("<!DOCTYPE html PUBLIC" & comillas & "-//W3C//DTD XHTML 1.0 Transitional//EN" & comillas & " " & comillas & "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" & comillas & ">")
html.Append("<html xmlns=" & comillas & "http://www.w3.org/1999/xhtml" & comillas & ">")
html.Append("<head>")
html.Append("<meta http-equiv=" & comillas & "Content-Type" & comillas & "content=" & comillas & "text/html;charset=utf-8" & comillas & "/>")
html.Append("<title>Reporte de Ejemplo</title>")
html.Append("</head>")
html.Append("<body>")
html.Append("<p><font face=" & comillas & "Tahoma" & comillas & "size=" & comillas & "6" & comillas & ">" + titulogrande + "</font></p>")
html.Append("<p><font face=" & comillas & "Tahoma" & comillas & "size=" & comillas & "3" & comillas & ">" + "Reporte de Ejemplo: " + Now.Date() + "</font></p>")
html.Append("</br>")
html.Append("<table CELLSPACING=0 CELLPADDING=5 border=2 BORDERCOLOR=" & comillas & "#000000" & comillas & " bgcolor=" & comillas & "#FFFFFF" & comillas & ">")
html.Append("<tr> <b>")
For Each item As Object In titulos
html.Append("<th>" & "<font face=" & comillas & "Tahoma" & comillas & "size=" & comillas & "2" & comillas & ">" & item.ToString() & "</font></th>")
Next
html.Append("</b> </tr>")
'Generando datos desde el DataGridView.
For i As Integer = 0 To datos.Rows.Count - 1
html.Append("<tr>")
For j As Integer = 0 To datos.Columns.Count - 1
html.Append("<td>" & "<font face=" & comillas & "Tahoma" & comillas & "size=" & comillas & "2" & comillas & ">" + datos.Rows(i)(j).ToString() & "</font></td>")
Next
html.Append("</tr>")
Next
html.Append("</body>")
html.Append("</html>")
w.Write(html.ToString())
w.Close()
Catch ex As Exception
Throw ex
End Try
End Sub
End Class
Luego una captura del programa:
Desde el boton Exportar Html:
Try
'Intentar generar el documento.
Dim titulos As New ArrayList()
Dim datostabla As New DataTable()
'Path que guarda el reporte en el escritorio de windows (Desktop).
Dim [OF] As New Html(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "\Reporte Ejemplo.html")
'Se obtienen los titulos del DataGridView y se crean las columnas de la tabla.
For Each item As DataGridViewColumn In grid1.Columns()
titulos.Add(item.HeaderText)
datostabla.Columns.Add()
Next
'Se crean las filas de la tabla.
For Each item As DataGridViewRow In grid1.Rows
Dim rowx As DataRow = datostabla.NewRow()
datostabla.Rows.Add(rowx)
Next
'Se pasan los datos del dataGridView a la tabla.
For Each item As DataGridViewColumn In grid1.Columns
For Each itemx As DataGridViewRow In grid1.Rows
datostabla.Rows(itemx.Index)(item.Index) = grid1(item.Index, itemx.Index).Value
Next
Next
[OF].ExportarDatosHTML(titulos, datostabla)
Process.Start([OF].xpath)
Catch ex As Exception
'Si el intento es fallido, mostrar MsgBox.
MessageBox.Show("No se puede generar el documento HTML.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Al ejecutar
El archivo se exporta al escritorio y se ejecuta inmediatamente. Nos vemos amigos en otra entrega, espero que les agrade, dejen sus comentarios y/o un G+ si asi gustan, Bye..
Comentarios
Publicar un comentario