9 namespace sage.addons.rgpd
14 internal class RgpdFileExportToCSV : IRgpdFileExportOperations
19 private const string DELIMITADOR =
";";
21 private StringBuilder _oCsv = null;
26 public string _RutaFicheroGenerado
28 get {
return _cRutaFicheroGenerado; }
29 set { _cRutaFicheroGenerado = value; }
31 string _cRutaFicheroGenerado =
string.Empty;
39 bool IRgpdFileExportOperations._Exportar(DataTable tdtDatos,
bool tlPreguntarRuta)
41 if (tdtDatos == null || tdtDatos.Rows.Count == 0)
47 if (!preguntarDondeCrearElFichero())
52 obtenerRutaTemporalParaGenerarElFichero();
55 _oCsv =
new StringBuilder();
57 tdtDatos.AsEnumerable().Cast<DataRow>().ToList().ForEach(loRow => adjuntarAlCsvLosDatosDeLaFila(loRow));
59 grabarFicheroConLasLineasDeDatosObtenidas(_oCsv.ToString());
68 private void adjuntarAlCsvLosDatosDeLaFila(DataRow toRow)
70 var campo = Convert.ToString(toRow[
"DESCRIPCIONCAMPO"]).TrimEnd();
71 var valor = Convert.ToString(toRow[
"VALORCAMPO"]).TrimEnd();
72 if (
String.IsNullOrWhiteSpace(valor))
74 var newLine =
string.Format(
"{0}{1}{2}", campo, DELIMITADOR, valor);
75 _oCsv.AppendLine(newLine);
82 private void grabarFicheroConLasLineasDeDatosObtenidas(
string tcCsv)
86 File.WriteAllText(_cRutaFicheroGenerado, tcCsv, Encoding.UTF8);
88 catch (Exception loEx)
90 DB.Registrar_Error(loEx);
97 private void obtenerRutaTemporalParaGenerarElFichero()
102 _cRutaFicheroGenerado = Path.ChangeExtension(Path.GetTempFileName(),
"csv");
104 catch (Exception loEx)
106 DB.Registrar_Error(loEx);
114 private bool preguntarDondeCrearElFichero()
116 _cRutaFicheroGenerado =
String.Empty;
117 SaveFileDialog loForm =
new SaveFileDialog();
118 loForm.Filter =
"CSV (delimitado por comas)|*.csv";
119 loForm.Title =
"Guardar fichero CSV";
121 if (loForm.FileName !=
"")
123 _cRutaFicheroGenerado = loForm.FileName;