GeneXus - Problema leer Excel

   
Vista:

Problema leer Excel

Publicado por Kevin kevinkapo_21@hotmail.com (18 intervenciones) el 19/10/2011 14:51:44
Buen dia foro. Necesito q me ayuden con lo siguiente: tengo un Excel de 3427 filas y quiero leerlo y guardar la informacion en una tabla en genexus. Estoy haciendo lo sigueinte:

&CargaExcel.Open("C:\OBSERVACIONES MEDITAR.xls")

&ContadorRenglon = 2

If &CargaExcel.ErrCode <>0
&Msj = 'No se puede abrir la planilla'
Else
Do While &CargaExcel.Cells(&ContadorRenglon,1).Text <> ''

&Afiliado = &CargaExcel.Cells(&ContadorRenglon,3).Text
&Afi=StrReplace(&Afiliado, "/", ".")
&NumAfi=VAL(&Afi)
&NAfi = TRUNC(&NumAfi, 0)

&FechaIni = &CargaExcel.Cells(&ContadorRenglon,5).Text
&FechaIE=StrReplace(&FechaIni, "/", "")
&Ani=SUBSTR(&FechaIE, 5, 4)
&Mess=SUBSTR(&FechaIE, 3, 2)
&Diaa=SUBSTR(&FechaIE, 1, 2)
&DiaaMess=CONCAT(&Mess,&Diaa)
&Fech=CONCAT(&Ani,&DiaaMess)
&Fechaa=VAL(&Fech)
&fechafei = nullvalue(&fechafei)
RCPC001.Call(&Fechaa,&fechafei)

&FechaRec = &CargaExcel.Cells(&ContadorRenglon,11).Text
&Fec=StrReplace(&FechaRec, "/", "")
&An=SUBSTR(&Fec, 5, 4)

&Me=SUBSTR(&Fec, 3, 2)
&Di=SUBSTR(&Fec, 1, 2)
&DiMe=CONCAT(&Me,&Di)
&Fe=CONCAT(&An,&DiMe)
&Fecha=VAL(&Fe)
&fechafec = nullvalue(&fechafec)
RCPC001.Call(&Fecha,&fechafec)

&CMEAYN = &CargaExcel.Cells(&ContadorRenglon,1).Text
&CMENPE = &CargaExcel.Cells(&ContadorRenglon,2).Number
&CMEPRG = &CargaExcel.Cells(&ContadorRenglon,4).Text
&CMEOBR = &CargaExcel.Cells(&ContadorRenglon,6).Text
&CMEDOM = &CargaExcel.Cells(&ContadorRenglon,7).Text
&CMEPRE = &CargaExcel.Cells(&ContadorRenglon,8).Text
&CMEPRA = &CargaExcel.Cells(&ContadorRenglon,9).Text
&CMECPR = &CargaExcel.Cells(&ContadorRenglon,10).Text
&CMEENM = &CargaExcel.Cells(&ContadorRenglon,12).Text
&CMERET = &CargaExcel.Cells(&ContadorRenglon,13).Text
&CMEMRE = &CargaExcel.Cells(&ContadorRenglon,14).Number
&CMEOBS = &CargaExcel.Cells(&ContadorRenglon,15).Text

if &CMENPE = 0
FOR EACH O01NRO
WHERE O01NRO = &NAfi
&CMENPE = O01NPE
ENDFOR
endif

New

CMEAYN = &CMEAYN
CMENPE = &CMENPE
CMEAFI = &NAfi
CMEPRG = &CMEPRG
CMEFEI = &fechafei
CMEOBR = &CMEOBR
CMEDOM = &CMEDOM
CMEPRE = &CMEPRE
CMEPRA = &CMEPRA
CMECPR = &CMECPR
CMERAS = &fechafec
CMEENM = &CMEENM
CMERET = &CMERET
CMEMRE = &CMEMRE
CMEOBS = &CMEOBS


WHEN DUPLICATE
FOR EACH CMENPE CMERAS
WHERE &CMENPE = CMENPE
WHERE &fechafec = CMERAS

CMEAYN = &CMEAYN
CMEAFI = &NAfi
CMEPRG = &CMEPRG
CMEFEI = &fechafei
CMEOBR = &CMEOBR
CMEDOM = &CMEDOM
CMEPRE = &CMEPRE
CMEPRA = &CMEPRA
CMECPR = &CMECPR
CMEENM = &CMEENM
CMERET = &CMERET
CMEMRE = &CMEMRE
CMEOBS = &CMEOBS

ENDFOR
EndNew

&ContadorRenglon = &ContadorRenglon + 1

EndDo

EndIf

&CargaExcel.Close()


Cuando ejecuto este procedimiento queda ejecutando y tarda muchisimo tiempo y termina mostrandome que no se puede ver la informacion o algo asi y no carga nada en la tabla..

Alguien me dice como hacerlo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema leer Excel

Publicado por Julio (301 intervenciones) el 19/10/2011 23:00:12
Prueba agregando esta instrucciónde luego de abrir el archivo :
&CargaExcel.Hide

Sugerencias:
Haz pruebas con unos 5 o diez registros
Poniendo un contador hacer un commit cada 100 o 200 registros
Pon un testigo (escribir un valor al extremo derecho del registro en una columna del Excel) que indique cual ha sido el último registro procesado porque podría ser que tengas problemas con datos
Si haces esta última sugerencia no olvidar gabar el archivo con &CargaExcel.Save

Cuéntanos como te fue.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema leer Excel

Publicado por Kevin (18 intervenciones) el 20/10/2011 13:08:56
Julio, primero muchas gracias por responder mi consulta.. Hice lo q me dijiste, despues del &CargaExcel.Open("C:\OBSERVACIONES MEDITAR.xls") agregue &CargaExcel.Hide. Agregue un contador despues ni en la primer linea del do while y cuando sale del new pregunto si llego a 100 y hago un commit. Agregue una variable para que me vaya guardando el ultimo leido y cuando sale del do while hago &CargaExcel.Cells(2, 17).Text = &UltimoLeido. Hice todo esto pero no veo ninguna mejora.. sigue haciendo lo mismo, mis compañeros de trabajo no saben tampoco como solucionarlo y esto estaba andando antes pero ahora no se que pasa. Me sugirieron hacer el procedimiento main y Comman Line y cuando lo ejecuto desde Genexus al procedimiento se abre la ventana DOS pero se cierra enseguida. Cuando lo ejecuto desde el panel me queda el browser ejecutando y no hace nada..

Espero mas ayuda..

Gracias..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema leer Excel

Publicado por Julio (301 intervenciones) el 21/10/2011 02:37:34
Hola Kevin:
Es un poco extraño lo que ocurre con tu procedimiento, tengo varios archivos que ejecutan ese tipo de tareas pero no he experimentado problema alguno. Por si acaso, renombra tu archivo con un nombre de no más de ocho caracteres como por ejemplo &CargaExcel.Open("C:\OBSERV.xls"), este momento no recuerdo muy bien si hay algún problema con los nombres de archivos largos (aunque creo que sí).
Ponle antes, en medio, y después del do while un mensaje que diga:
msg('Antes de ingresar al bucle...')
msg('Ahora está dentro del bucle...')
msg('Acaba de salir del bucle...')
respectivamente, deberá presentarte en pantalla estos mensajes y servirán para saber por donde anda el cursor.

Avísame como evoluciona, siempre es bueno aprender.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema leer Excel

Publicado por Anthony (4 intervenciones) el 26/03/2012 23:58:35
Hola, tengo un problema parecido, y hago todo lo que decis con respecto a los msg, y me muestra que entra a los while, el tema es que no graba en la tabla y no se porque.
Aca te muestro el codigo:

&E.Open('c:\prueba2.xls')
&R = 3 // Renglón inicial

&ind = 0
Do while &ind = 0 and &R < 10

&p1 = &E.Cells(&R,3).Number
&p2 = &E.Cells(&R,4).Number
&p3 = &E.Cells(&R,5).Number
&p4 = &E.Cells(&R,6).Number
&p5 = &E.Cells(&R,7).Number
&p6 = &E.Cells(&R,8).Number
&p7 = &E.Cells(&R,9).Number
&p8 = &E.Cells(&R,10).Number
&p9 = &E.Cells(&R,11).Number

if &p1 <> nullvalue(&p1)
call(PGrabar ,&p1, &p2, &p3, &p4, &p5, &p6, &p7, &p8, &p9)
&R += 1
else
&ind = 1
endif

EndDo

&E.Close()

El PGRABAR es un procedimiento que se encarga solamente de grabar los datos leidos del excel a una tabla. Acá le saque los msg para que quede mas claro el codigo.
Si me ayudas te agrdesco, hasta luego
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema leer Excel

Publicado por Julio (301 intervenciones) el 27/03/2012 15:26:53
Hola Anthony:

Si la lectura de Excel está bien, entonces necesitamos que nos muestres el procedimiento que hace la grabación de los registros que es lo que no está haciéndolo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema leer Excel

Publicado por Anthony (4 intervenciones) el 27/03/2012 21:42:59
Gracias Julio, ya pude solucionar el problema.
Lo que pasaba era que el excel estaba vacío cuando iba a leer.
El procedimiento que se encarga de la creación del excel no funcionaba bien.
Hasta luego y muchas gracias por responder.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar