Cambiar "," por ";" en archivo CSV

244 views
Skip to first unread message

Alejandro Garcia G.

unread,
May 25, 2019, 12:05:11 PM5/25/19
to Comunidad de Visual Foxpro en Español
Saludos a todos.

Tengo un archivo CSV separado por "comas" (realmente me coloca es punto y coma ";"). Dentro de mi app hay un proceso que toma los datos y hace un APPEND FROM. El proceso me trabaja en casi todos los lugares en donde tengo instalado el aplicativo, sin embargo, en algunos equipos que tienen otro tipo de configuración regional, no me acepta el punto y coma sino la coma.

¿Hay manera de modificar mi archivo CSV de manera automática dependiendo de la configuración regional que tenga el equipo.? ¿se puede hacer esto?

Gracias por sus comentarios.

Jean Pierre Adonis De La Cruz Garcia

unread,
May 25, 2019, 4:57:19 PM5/25/19
to Comunidad de Visual Foxpro en Español
A mi parecer te recomiendo que automatices la Configuracion Regional sea segun tu sistema, asi de simple.
Este proceso que hice te cambia si  el separador de lista esta como "," coma, lo convierte en ";" punto y coma, en caso que sea al reves lo cambias nomas.
*** cambiar separador de Lista
WSHShell = CreateObject("WScript.Shell")
RLista = WSHShell.RegRead("HKCU\Control Panel\International\sList")
IF Rlista=","
WSHShell.RegWrite( "HKCU\Control Panel\International\sList", ";", "REG_SZ")
ENDIF 
************

Espero que sea algo que te ayude.
Despues que termine tu proceso lo haces que vuelva a su estado normal automatizandolo nomas.

Luis Maria Guayan

unread,
May 25, 2019, 8:27:31 PM5/25/19
to Comunidad de Visual Foxpro en Español
lcFile =  "C:\MiArchivo.csv"
? = STRTOFILE(STRTRAN(FILETOSTR(lcFile),[;],[,]),lcFile,0)

Luis Maria Guayan
Tucuman, Argentina

Fidel Charny

unread,
May 26, 2019, 9:15:26 AM5/26/19
to Comunidad de Visual Foxpro en Español
Cambiarle al usuario la configuración general no es algo que tenga que hacer nuestro programa.
Tomando la primer parte de la respuesta de Jean Pierre y la respues de Luis María Guayán, podría ser algo como lo que sigue:

IF Get_sList = CHR(44)
    lcFile
=  "C:\MiArchivo.csv"  && el archivo que corresponda
    STRTOFILE
(CHRTRAN(FILETOSTR(lcFile),CHR(59),CHR(44)),lcFile,0)
ENDIF

PROCEDURE get_sList
* Obtiene el separdaor de listas del registro de Windows
* para el Usuario actual.

TRY

    LOCAL LOEX AS OBJECT
,;
        LCMESSAGE
,;
        loShell
as Object,;
        sList
       
    loShell
= CreateObject("WScript.Shell")
    sList
= loShell.RegRead("HKCU\Control Panel\International\sList")        
CATCH TO LOEX
    LOEX
.USERVALUE = PROGRAM()
    SHOWERROR
(LOEX)

FINALLY
    loShell
= null
    IF
!EMPTY(LCMESSAGE)
        MESSAGEBOX
(M.LCMESSAGE,0,PROGRAM())
    ENDIF

ENDTRY
RETURN sList
ENDPROC




Alejandro Isla

unread,
May 26, 2019, 4:05:31 PM5/26/19
to Comunidad de Visual Foxpro en Español
Cuidado al reemplazar el  punto y coma por coma, porque en lo números puede ser que te use la coma como separador de miles o decimal y te altera los campos.

Por ej. 

"hola";1025,25;"chau" son los campos
hola
1025,25
chau

Si pones como separador coma te quedan
hola
1025
25
chau

y se va al diablo al exportación.

Saludos.


El sábado, 25 de mayo de 2019, 13:05:11 (UTC-3), Alejandro Garcia G. escribió:

Alejandro Isla

unread,
May 26, 2019, 4:08:17 PM5/26/19
to Comunidad de Visual Foxpro en Español
Una duda, si el equipo te acepta las comas, tu titulo no debería ser al revés  "Cambiar ";" por ","  en archivo CSV" 

ya que indicas que tu cvs tiene los ; y desea obtener con ,

Saludos.



El sábado, 25 de mayo de 2019, 13:05:11 (UTC-3), Alejandro Garcia G. escribió:

Carton Jeston

unread,
May 27, 2019, 2:26:06 AM5/27/19
to Comunidad de Visual Foxpro en Español
Casualmente hace poco estaba tratando este tema, con un csv generado por excel que pone ; (punto y coma) al exportar y para la web necesitaba que la separación fuese con comas.

Primero sustituí la coma por el punto y hacia que se arreglaran los decimales.

Posteriormente sustituí el punto y coma por la coma y se quedaba correctamente.

Alejandro Garcia G.

unread,
May 27, 2019, 11:41:54 AM5/27/19
to Comunidad de Visual Foxpro en Español
Hasta ahora logro ingresar una vez mas.

Gracias a todos por las respuetas, voy a probrar todas para ver cual me funciona mejor. Como les comente, como todos acceden a un espacio en la nube en donde bajan ese archivo de manera automática, y yo lo creo con ";", lo que quiero es verificarlo en el equipo que lo bajo, esto con el fin de que si por cualquier motivo se cambio el ";" por "," el sistema lo modifique antes de subirlo. Sé que debe estar atento a la separación de los decimales que igual me varía cuando existan. 


Aunque no trabjae en esto el fin de semana, se me ocurrio que tal vez podría usar un archivo JSON y en mi programa cargarlo en una tabla DBF cursora, pero estuve buscando algunas rutinas para hacerlo (de DBF a JSON y de JSON  a DBF), pero me abrume un poco, me toca leer para hacerlo.

Si me recomiendan alguna rutina seria excelente, baje una de Irwin o otra de Marco Plaza y una mas que encontre en otra pagina.


Gracias como siempre por su apoyo y colaboración.
Reply all
Reply to author
Forward
0 new messages