Leer archivos txt y csv con GeneXus 16


Para leer archivos txt o csv usamos las funciones dfr que vienen predeterminadas con GeneXus

Ejemplo de un archivo delimitado llamado "Desarrolladores.txt" que esta en la carpeta PublicTempStorage del proyecto:

1,Gregorys Gonzalez,123456,1965-01-10
2,Nestor Lesna,987654,1992-10-12
3,Pablo Fernandez,951357,1980-11-17
4,Santiago Sscarpa,486259,1985-12-11
5,Santiago Sarubbi,874512,1969-07-15
6,Facundo Martinez,985532,1981-12-09
7,Maria Benavides,784516,1989-10-12
8,Jorge Perrone,352698,1955-10-12

Creare un procedimiento que me permita recorrer cada línea del archivo txt e iré guardando los datos en variables para su posterior uso

Variables del procedimiento:

Source del procedimiento:
//Para este ejemplo, el separador de campo de parámetro no es necesario.
Java [!&Path!] = getHttpContext().getDefaultPath(); //Call protocoll = HTTP
&NombreArchivo = "Desarrolladores.txt" //o csv
&RutaCompleta = &Path.Trim() + &File.Separator + 'PublicTempStorage' + &File.Separator + &NombreArchivo.Trim()

&i = dfropen(&RutaCompleta.Trim(),1024,,"") 
If &i = 0
    Do while dfrnext() = 0
       &i = dfrgnum(&ClientCodigo)
       &i = dfrgtxt(&ClientName)
       &i = dfrgtxt(&ClientCedula)
       &i = dfrgdate(&ClientFecNac, 'ymd', '-')
       AltaDesarrollador(&ClientCodigo, &ClientName, &ClientCedula, &ClientFecNac)
    EndDo
    &i = dfrclose( )
Else
    &Mensaje = "No se pudo abrir el archivo"
SaveLog(&Pgmname, &Mensaje.ToString().Trim())
EndIf

Como se puede apreciar en el procedimiento cada vez que leo una línea del archivo txt llamo a un procedimiento (AltaDesarrollador) que me permite guardar los datos en un tabla.

Comentarios