Sección de códigos , trucos y ejemplos para visual basic


270 - Exportar Datagrid a HTML

<Volver> - Anterior - Siguiente



 

Ejemplo que recorre los campos y filas de un control DataGrid para exportar los registros a un archivo HTML

 

La rutina que exporta los datos al Html se llama Exportar_DataGrid_Html y tiene dos parámetros:

Sub Exportar_DataGrid_Html(Path As String, _
DataGrid As DataGrid)

 

El primer parámetro es la ruta y el nombre del Html a generar, y el segundo parámetro es el control Datagrid, obviamente con los datos ya cargados.

Nota: para obtener los nombres de los campos del DataGrid, se consulta la propiedad Caption de la propiedad Columns del dataGrid, y para obtener el valor de la celda actual, se consulta la propiedad CellValue de la propiedad Columns, y como indice se le pasa a CellValue, el número de la fila actual a la propiedad GetBookmark del dataGrid, por ejemplo:

Dato = DataGrid.Columns(Columna).CellValue(DataGrid.GetBookmark(Fila))

 

Para el ejemplo se necesita agregar al preyecto lo siguiente:

 

En un Form1:

 

En un Form2:

 

Por último un módulo bas que es el que tiene la Sub que exporta los datos.

 


Código fuente en el Form1

Option Explicit

'***************************************************************************
'*  Controles: tres CommandButton, un commonDialog, un WebBrowser en Form2, _
    un Control DataGrid , un textBox llamado txt_sql, y la referencia Microsoft ADO
'***************************************************************************

Private Sub Command1_Click()
Dim Ruta As String
    With CommonDialog1
         
         .CancelError = True
         .Filter = "Archivos Html|*.Html|Archivos Htm|*.htm"
         .FileName = vbNullString
         
         On Error Resume Next
         .ShowSave
         
         If Err.Number = 32755 Then
            Exit Sub
         End If
         
         On Error GoTo 0
         
         If .FileName = "" Then Exit Sub
         
         'Path para el archivo html que se carga en el WebBrowser del Form2
         Form2.Path_Html = .FileName
         
         'Se le pasa el path de la base de datos y el control Datagrid
         Call Exportar_DataGrid_Html(.FileName, DataGrid1)
    End With

End Sub

Private Sub Command2_Click()
Dim sql As String

    ' Consulta SQL
    sql = txt_SQL

    If txt_SQL = vbNullString Then
        MsgBox "Falta escribir la consulta sql en el textBox", vbCritical
        Exit Sub
    End If
    
    With CommonDialog1
    
        .Filter = "MDB|*.mdb"
        .ShowOpen
    
        If .FileName = "" Then Exit Sub
       
        ' Carga los datos en el DataGrid
        Call Cargar_DataGrid(.FileName, sql, DataGrid1)
       

    End With
End Sub


'sub que carga los datos en el control DataGrid
Sub Cargar_DataGrid(Path As String, _
                    sql As String, _
                    DataGrid As DataGrid)

Dim cn As Connection
Dim rst As Recordset

'Nueva conexión ADO
Set cn = New Connection
    cn.CursorLocation = adUseClient
  
  'Abre la conexión
  cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path & ";"
  
  ' Nuevo recordset
  Set rst = New Recordset
      
      'Abre el recordset
      rst.Open sql, cn, adOpenDynamic, adLockOptimistic

   ' Asigna al DataGrid el Recordset anterior
   Set DataGrid.DataSource = rst

End Sub

Private Sub Command3_Click()
    'Abre el Formulario que tiene el control _
     WebBrowser para ver la página HTML con los datos
    Form2.Show 1
End Sub

Private Sub Form_Load()
    
    'Caption de los CommandButton y otros
    Command1.Caption = " Exportar a Html "
    Command2.Caption = " Abrir base de dato "
    Command3.Caption = " Ver en WebBrowser "
    Me.Caption = " Ejemplo para exportar un DataGrid a Html "
    'txt_SQL = ""

End Sub

 

 

Código en el Form2 para cargar la página html en el webBrowser

 Option Explicit

Public Path_Html As String

'***************************************************************************
'*  Name              : Código fuente del form2
'*  Controles         : Un Control webBrowser llamado webBrowser1
'***************************************************************************

Private Sub Form_Load()

    Me.Caption = Path_Html

    'Carga el archivo html en el contol webbrowser
    WebBrowser1.Navigate Path_Html

End Sub

Private Sub Form_Resize()
'Redimensiona y posiciona el Control WebBrowser
WebBrowser1.Move 0, 0, ScaleWidth, ScaleHeight
End Sub

 

Código en el Módulo bas ( Sub para exportar el DataGrid )

'***************************************************************************
'* Código del módulo bas para exportar el control DataGrid a un Html
'***************************************************************************


'Recibe la ruta y nombre del archivo donde crear el HTML, y el DataGrid
Sub Exportar_DataGrid_Html(Path As String, _
DataGrid As DataGrid)

On Error GoTo ErrSub

Dim codigo_Html As String
Dim Fila As Integer
Dim Columna As Integer
Dim fname As String
Dim f As Integer
Dim Dato As Variant

Screen.MousePointer = vbHourglass

'Color de la Tabla y el borde
codigo_Html = "<TABLE width=100% BORDER=0>" & vbCrLf

'Crea los Encabezados de columna
codigo_Html = codigo_Html & "<TR bgcolor=#000000> " & vbCrLf

'Recorre las columnas del DataGrid
For Columna = 0 To DataGrid.Columns.Count - 1
codigo_Html = codigo_Html & " <TH><font color=#FFFFFF>" & _
DataGrid.Columns(Columna).Caption & "</TH>" & vbCrLf
Next Columna

codigo_Html = codigo_Html & "</TR>" & vbCrLf

' Recorre las filas y las columnas y genera el _
etiquetado y lo guarda en la variable ( codigo_Html )


For Fila = 0 To DataGrid.ApproxCount - 1
codigo_Html = codigo_Html & "<TR bgcolor=#D3D3D3 > " & vbCrLf
For Columna = 0 To DataGrid.Columns.Count - 1

'Este es el dato actual del datagrid
Dato = DataGrid.Columns(Columna).CellValue(DataGrid.GetBookmark(Fila))

codigo_Html = codigo_Html & " <td><font color=#000000>" & Dato & "</TD>" & vbCrLf

Next
codigo_Html = codigo_Html & "</TR>" & vbCrLf
DoEvents
Next

'Cierra las etiquetas del codigo_Html
codigo_Html = "<HTML><HEAD></HEAD><BODY BGCOLOR=#999999>" & vbCrLf & _
codigo_Html & "</BODY></HTML>"

' Graba el archivo en disco
f = FreeFile
'Abre y Crea el archivo Html
Open Path For Output As f

'Crea el archivo HTML
Print #f, codigo_Html

Close

MsgBox " Datagrid exportado ", vbInformation

Screen.MousePointer = vbNormal

Exit Sub

ErrSub:

MsgBox " Error al exportar Datagrid : " & Err.Description, vbCritical
Screen.MousePointer = vbNormal

End Sub


 

Nota: para indicar los colores de las celdas y tablas del archivo Html, se podría añadir dichos parámetros a la Sub que exporta. Los parámetros podrían ser de tipo Long para los colores, pero abria que convertir dichos valores en un formato Hexadecimal en formato Html, por ejemplo:

Private Function Obtener_Color_Hexadecimal(ByVal Color As Long) As String
  Dim Azul As Byte, Verde As Byte, Rojo As Byte
    
    Azul = (Color And 16711680) / 65536
    Verde = (Color And 65280) / 256
    Rojo = Color And 255
   
  
    Obtener_Color_Hexadecimal = "#" & _
                                Hex$(Rojo) & _
                                Hex$(Verde) & _
                                Hex$(Azul)

End Function 

 

y para obtener el color:

Private Sub Command1_Click()

    MsgBox Obtener_Color_Hexadecimal(vbBlue)

End Sub

 


Recursos vb 6.0 - Enlaces relacionados



Buscar en Recursos vb