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


279 - Exportar ListView a HTML

<Volver> - Anterior - Siguiente



 

Rutina que permite exportar el contenido de un Listview a un archivo HTML

 

Código fuente modificado por : Leandro Ascierto

Este ejemplo es muy similar a este otro: Exportar Microsoft Flexgrid a Html , con la diferencia que en este se pueden configurar las características y propiedades en la exportación:

 

La rutina que exporta los Items del ListView se llama Exportar_ListView_Html y tiene cuatro parámetros:

 

Call Exportar_ListView_Html(Path, ListView1, txt_titulo, txt_Pie)

El primero es la ruta y el nombre del archivo htm. El segundo el control ListView. El tercer y cuarto parámetro es el encabezado o título del listado y por último el pie de página

 

Vista del formulario de ejemplo

 

Nota: en el siguiente link, hay un ejemplo de como crear un asistente que permite configurar y exportar formularios de datos utilizando un módulo de clase : código fuente de Asistente para exportar listados

 


Para el ejemplo se necesita agregar al preyecto lo siguiente:

 

Controles del formulario:

 

Al exportar el ListView, el html se generará de esta forma:

 

Nota: Los valores que defienen el color de la fuente, color de la tabla, color de la página, tamaño de fuentes, el tipo, alineación del texto, tamaño del borde y demás propiedades, ..están definidas como constantes en el módulo bas.

Por eso, si es necesario cambiar las propiedades en tiempo de ejecución, se pueden eliminar las constantes, y agregarlas como parámetros al procedimiento que exporta. ( Aunque sería mucho mejor hacer un módulo de clase )

 


Código fuente en el Form1

 Option Explicit

'***************************************************************************
'*  Ejemplo para exportar un control Listview a un archivo HTML _

'*  Controles: Un CommandButton, un ListView, dos TextBox ( txt_titulo y txt_Pie), _
    Nota: el archivo htm se genera en el App.path del proyecto
'***************************************************************************


' Botón que exporta el Listview
'***************************************************************************
Private Sub Command1_Click()
    Dim Path As String

    Path = App.Path & "\" & App.EXEName & ".html"

    Call Exportar_ListView_Html(Path, ListView1, txt_titulo, txt_Pie)

End Sub

Private Sub Form_Load()
    
    Dim i As Integer
    Dim Item As ListItem
        
        'Agega algunos items al ListView
        With ListView1
            .View = lvwReport 'vista de reporte
            
            'Agrega cuatro columnas
            .ColumnHeaders.Add , , " Columna A"
            .ColumnHeaders.Add , , " Columna B"
            .ColumnHeaders.Add , , " Columna C"
            .ColumnHeaders.Add , , " Columna D"
            .GridLines = True
        End With
    
    'Añade 100 Items
    For i = 0 To 100
        
        Set Item = ListView1.ListItems.Add(, , CStr(i))
            
            Item.SubItems(1) = "SubItem A : " & i
            Item.SubItems(2) = "SubItem B : " & i
            Item.SubItems(3) = "SubItem C : " & i
    Next
    Set Item = Nothing

    Me.Caption = " Ejemplo - exportar Listview a Htm "
    
    txt_titulo = " Listado de ejemplo - Exportar listview a Html "
    txt_Pie = " Fin del listado "
    
    Command1.Caption = " Exportar a Html "
    
End Sub

          

 

Código en el módulo bas

Sub Exportar_ListView_Html(Path_Html As String, _
ListView As ListView, _
TEXTO_ENCABEZADO As String, _
TEXTO_PIE As String)

Dim codigo_Html As String
Dim Fila As Integer
Dim Columna As Integer
Dim fname As String
Dim F As Integer
Dim Item As ListItem

Screen.MousePointer = vbHourglass
F = FreeFile
Open Path_Html For Output As F

'Etiqueta de inicio de la tabla, Color de la Tabla y el borde
codigo_Html = "<TABLE width=100% BORDER=" & SIZE_BORDE_TABLA & _
" Bordercolor=" & COLOR_BORDE_TABLA & " bgcolor=" & _
COLOR_FONDO_TABLA & ">" & vbCrLf

'Crea la etiqueta de apertura para los encabezados de columna
codigo_Html = codigo_Html & "<TR bgcolor=" & _
COLOR_FONDO_ENCABEZADO & "> " & vbCrLf

'Recorre las columnas del ListView ..si es que tiene
For Columna = 1 To ListView.ColumnHeaders.count

codigo_Html = codigo_Html & " <TH><div align=" & _
ALIGN_ENCABEZADO & "><font size=" & _
FONT_SIZE_ENCABEZDO & " face=" & _
FONT_NAME_ENCABEZDO & _
" color=" & COLOR_FUENTE_ENCABEZADO & ">" & _
ListView.ColumnHeaders(Columna).Text & _
"</font></div></TH>" & vbCrLf

Next Columna

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

Print #F, codigo_Html
codigo_Html = ""
' Recorre las filas y las columnas del listview y genera el _
etiquetado. ( lo va almacenando en la variable " codigo_Html "

For Fila = 1 To ListView.ListItems.count

'Etiqueta de apertura de la fila
codigo_Html = codigo_Html & "<TR bgcolor=" & _
COLOR_FONDO_CELDA & " > " & vbCrLf

'Etiqueta de apertura, propiedades de la celda y el valor del item actual
codigo_Html = codigo_Html & " <td><div align=" & _
ALIGN_FUENTE_CELDA & "><font color=" & _
COLOR_FUENTE_CELDA & " size=" & _
FONT_SIZE_CELDA & " face=" & _
FONT_NAME_CELDAS & ">" & _
ListView.ListItems(Fila).Text & _
"</font></div></td>" & vbCrLf

'Recorre los subitems ...si es que hay
For Columna = 2 To ListView.ColumnHeaders.count

codigo_Html = codigo_Html & " <td><div align=" & _
ALIGN_FUENTE_CELDA & "><font color=" & _
COLOR_FUENTE_CELDA & " size=" & _
FONT_SIZE_CELDA & " face=" & _
FONT_NAME_CELDAS & ">" & _
ListView.ListItems(Fila).SubItems(Columna - 1) & _
"</font></div></td>" & vbCrLf

Next
' Cierra la etiqueta de la fila actual
codigo_Html = codigo_Html & "</TR>" & vbCrLf
Print #F, codigo_Html
codigo_Html = ""

Next
' Cierra la etiqueta HTML de la Tabla
codigo_Html = "</table>" & vbCrLf

'Agrega las etiquetas restantes y el pie de página
codigo_Html = "<HTML><HEAD></HEAD><BODY BGCOLOR=" _
& COLOR_FONDO_PAGINA & ">" & vbCrLf & _
"<p><font face=verdana size=" & _
FONT_SIZE_TITULO & " color=" & _
COLOR_FUENTE_TITULO & ">" & _
TEXTO_ENCABEZADO & _
"</font></p><HR>" & codigo_Html & _
"<HR><font face=verdana size=" & _
FONT_SIZE_PIE & " color=" & _
COLOR_FUENTE_TITULO & _
">" & TEXTO_PIE & "</font></BODY></HTML>"

'Abre y Crea el archivo Html


'Escribe los datos
Print #F, codigo_Html

Close

Screen.MousePointer = vbNormal

'fin
MsgBox " Archivo Html generado en: " & vbCrLf & Path_Html, vbInformation

End Sub

 


Recursos vb 6.0 - Enlaces relacionados



Buscar en Recursos vb