Cómo exportar el contenido de un ListView a fichero CSV (eligiendo el carácter de separación). Dicho fichero podrá ser abierto por Libre Office Calc, Office Excel o cualquier otro editor de ficheros CSV (Comma Separated Values).
- Función que exportar un ListView a un fichero CSV en Delphi.
- Ejemplo de uso de la función exportarListViewACSV que exporta un ListView a CSV.
- Ejecutando la aplicación de ejemplo para exportar el contenido de un ListView en Delphi a fichero CSV.
- Abrir fichero CSV exportado con Libre Office Calc y Excel.
Función que exportar un ListView a un fichero CSV en Delphi
A continuación mostramos el código Pascal (Delphi) para exportar un ListView (que se pasa como parámetro) a un fichero CSV (también pasado como parámetro), eligiendo el separador a usar de cada campo y si queremos exportar los títulos del ListView:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
function exportarListViewACSV (ficheroCSV : string; ListView: TListView; separador : string; exportarTitulos : boolean): Boolean; var i, j : Integer; listaCompleta : TStringList; fila : string; begin Result := True; listaCompleta := TStringList.Create; try try if exportarTitulos then begin for i := 0 to ListView.Columns.Count - 1 do fila := fila + '"' + ListView.Columns[i].Caption + '"' + separador; if fila <> '' then listaCompleta.Add(fila); end; for i := 0 to ListView.Items.Count - 1 do begin fila := '"' + ListView.Items[i].Caption + '"' ; for j := 0 to ListView.Items[i].SubItems.Count - 1 do fila := fila + separador + '"' + ListView.Items[i].SubItems[j] + '"'; if fila <> '' then listaCompleta.Add(fila); end; listaCompleta.SaveToFile(ficheroCSV); except Result := False; end; finally listaCompleta.Free; end; end; |
La función anterior devolverá false si ha habido algún error en la exportación a CSV y true si se ha exportado correctamente.
Ejemplo de uso de la función exportarListViewACSV que exporta un ListView a CSV
Para usar la función necesitaremos disponer de un ListView en el formulario de nuestra aplicación, por ejemplo:
El ListView anterior, llamado «lsTareas», lo usaremos para mostrar las tareas (intervenciones) realizadas por un técnico. Es un ejemplo de un ListView con tres columnas: Técnico, Intervención, Fecha. Añadiremos también un botón (TButton) que será el que realice la ejecución de la función exportarListViewACSV para exportar el contenido del ListView a fichero CSV. Dicho botón tendrá el siguiente código en su evento Click:
1 2 3 4 5 6 7 8 |
procedure TformGIncidencia.btTareasCSVClick(Sender: TObject); begin dlGuardar.Title := 'Selección de fichero CSV para exportar las tareas'; dlGuardar.Filter := 'CSV (*.csv)|*.csv|Archivos de texto (*.txt)|*.txt|Todos los archivos (*.*)|*.*'; dlGuardar.DefaultExt := 'csv'; if dlGuardar.Execute then exportarListViewACSV(dlGuardar.FileName, lsTareas, ';', true); end; |
En el código anterior, para ejecutar la función exportarListViewACSV, le indicamos la ruta y nombre del fichero CSV donde se exportará el contenido del ListView y también indicaremos el carácter separador de campos, en nuestro caso «;» y si queremos que también guarde los títulos de las columnas del ListView, en nuestro casó sí que los guardaremos con «true».
Para que el código del botón de exportar funcione necesitaremos agregar un componente de tipo TSaveDialog de la pestaña «Dialogs» de componentes:
Dicho TSaveDialog tendrá el nombre «dlGuardar».
Ejecutando la aplicación de ejemplo para exportar el contenido de un ListView en Delphi a fichero CSV
Si agregamos contenido al ListView y pulsamos el botón de exportar:
Nos solicitará dónde queremos guardar el contenido y el nombre del fichero CSV:
Nos habrá generado un fichero «tareas.csv» con el siguiente contenido:
1 2 3 4 |
"Técnico";"Intervención";"Fecha"; "proyectoa";"Revisión de datos en usuarios";"16/02/2022 11:03:57" "proyectoa";"Alta de módulo con código asignado";"16/02/2022 11:03:38" "proyectoa";"Agregar módulo a listas desplegables de formularios";"16/02/2022 11:02:02" |
Abrir fichero CSV exportado con Libre Office Calc y Excel
Dicho fichero CSV puede abrirse, por ejemplo, con LibreOffice Calc:
Libre Office Calc detectará que se trata de un fichero CSV y nos mostrará las opciones de división de campos, en nuestro caso con separador «Punto y coma». No tendremos que hacer nada, directamente nos detectará el separador, pulsaremos «Aceptar»:
Nos cargará el contenido del fichero CSV separado por las columnas correspondientes a los títulos del ListView, listo para ser usado:
Para el caso de Excel, de Microsoft Office, abriremos el fichero tareas.csv:
Y en el caso de Excel de Office 2019, abre el fichero CSV con sus separadores correctos, sin mostrar opciones, listo para ser usado: