4/25/2011


Exportar ListView a fichero CSV VB.Net
Lenguaje de programación Visual Basic .Net
Explicamos cómo exportar el contenido de un ListView con varias columnas a un fichero de texto plano separado por punto y coma, que se puede abrir con Office Excel, OpenOffice Calc o con LibreOffice Calc.

La función para exportar un ListView a CSV con VB .Net:
'Exportar contenido ListView a formato CSV 
    'para abrir con Microsoft Office Excel, OppenOffice Calc o con 
    Private Sub exportarListViewCSV(ByVal lstview As ListView, ByVal ficheroCSV As String)
        Dim lineasCSV As New System.Text.StringBuilder
        Dim lineaActual As String = String.Empty

        'Escribir nombre de columnas y encabezados en la variable temporal
        For columnIndex As Int32 = 0 To lstview.Columns.Count - 1
            lineaActual &= (String.Format("{0};", lstview.Columns(columnIndex).Text))
        Next

        'Quitar la coma final
        lineasCSV.AppendLine(lineaActual.Substring(0, lineaActual.Length - 1))
        lineaActual = String.Empty

        'Escribir los datos del ListView en la variable temporal
        For Each item As ListViewItem In lstview.Items
            For Each subItem As ListViewItem.ListViewSubItem In item.SubItems
                lineaActual &= (String.Format("{0};", subItem.Text))
            Next

            'Quitar coma final
            lineasCSV.AppendLine(lineaActual.Substring(0, lineaActual.Length - 1))
            lineaActual = String.Empty
        Next

        'Guardar datos variable temporal a fichero CSV
        Dim Sys As New System.IO.StreamWriter(ficheroCSV)
        Sys.WriteLine(lineasCSV.ToString)
        Sys.Flush()
        Sys.Dispose()
    End Sub
Un ejemplo de uso de la función anterior (con un SaveFileDialog llamado dlGuardar):
dlGuardar.Filter = "Archivos CSV (*.csv)|*.csv|Todos los archivos (*.*)|*.*"
        dlGuardar.FilterIndex = 1
        dlGuardar.DefaultExt = "csv"
        dlGuardar.FileName = "Eventos google calendar"
        dlGuardar.OverwritePrompt = True
        dlGuardar.Title = "Guardar eventos Google Calendar"
        If dlGuardar.ShowDialog Then
            exportarListViewCSV(lsCitas, dlGuardar.FileName)
        End If

No hay comentarios: