Cómo exportar el contenido de un ListView en C#, con varias columnas, a un fichero de texto plano separado por punto y coma (CSV), que se puede abrir con Office Excel, OpenOffice Calc o con LibreOffice Calc, incluso con cualquier editor de texto plano (notepad, vi, nano).
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 |
dlGuardar.Filter = "Fichero CSV (*.csv)|*.csv"; dlGuardar.FileName = "Lista PDF Nóminas"; dlGuardar.Title = "Exportar a CSV"; if (dlGuardar.ShowDialog() == DialogResult.OK) { StringBuilder csvMemoria = new StringBuilder(); foreach (ColumnHeader columnasLista in lsPDF.Columns) { csvMemoria.Append(String.Format("\"{0}\";", columnasLista.Text)); } csvMemoria.AppendLine(); foreach (ListViewItem elementosLista in lsPDF.Items) { foreach (ListViewItem.ListViewSubItem lvs in elementosLista.SubItems) { if (lvs.Text.Trim() == string.Empty) csvMemoria.Append("\"\";"); else csvMemoria.Append(String.Format("\"{0}\";", lvs.Text)); } csvMemoria.AppendLine(); } System.IO.StreamWriter sw = new System.IO.StreamWriter(dlGuardar.FileName, false, System.Text.Encoding.Default); sw.Write(csvMemoria.ToString()); sw.Close(); } |
Donde:
- dlGuardar: será un componente no visual de tipo SaveFileDialog.
- lsPDF: componente visual ListView.