Crear archivos txt o csv con GeneXus 16


Para crear archivos txt o csv usamos las funciones dfw que vienen predeterminadas con GeneXus

Aca un ejemplo sencillo:

Variables del procedimiento:

Source del Procedimiento:

Java [!&Path!] = getHttpContext().getDefaultPath(); //Call protocoll = HTTP
&NombreArchivo = "Archivo_Creado_desde_GX_" + trim(str(hour(now()))) + trim(str(minute(now()))) + trim(str(second(now()))) + '.txt' //o csv
&RutaCompleta = &Path.Trim() + &File.Separator + 'PublicTempStorage' + &File.Separator + &NombreArchivo.Trim()

&i = dfwopen(&RutaCompleta, ";", '"') 
&i = dfwptxt('LISTA DE CLIENTES')
&i = dfwnext()
&i = dfwptxt('ID')
&i = dfwptxt('CEDULA')
&i = dfwptxt('NOMBRE')
&i = dfwptxt('TELEFONO')
&i = dfwnext()
For each Client
&i = dfwpNum(ClientId, 0)
&i = dfwptxt(ClientCedula.Trim())
&i = dfwptxt(ClientName.Trim())
&i = dfwptxt(ClientPhone.Trim())
&i = dfwnext()
Endfor
&i = dfwclose()
Return

La línea con el comando Java me permite obtener el Path donde esta desplegado el proyecto, para usarlo se debe colocar la propiedad Call Protocol del procedimiento en HTTP. Hago esto porque me guardo el txt generado en la carpeta PublicTempStorage de la aplicación.




Comentarios

  1. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  2. Consulta, si quiero guardar variables. No quiero usar atributos ni transacciones. Solo variables, se puede?

    ResponderBorrar
    Respuestas
    1. Hola Federico, se puede si, ejemplo: si las variables las tienes en un SDT, podrías hacer un for e ir agregando las líneas:

      For &pais in &paises

      &i = dfwpTxt(&Pais.Codigo)
      &i = dfwpTxt(&Pais.Nombre)
      &i = dfwnext()

      Endfor

      Borrar
  3. Hola Federico, muchas gracias por el código que entregas. Generé un procedimiento para crear el archivo el cual es llamado por otro, pero al ejecutarlo no me crea el archivo y no hace el return por lo que se queda en la llamada. ¿Qué podrá ser?...una vez más gracias.
    Eric.

    ResponderBorrar

Publicar un comentario