GeneXus - Reporte a Excel

 
Vista:

Reporte a Excel

Publicado por Carlos Andres (11 intervenciones) el 14/03/2007 19:16:02
Hola foro, necesito saber como genero un reporte desde Genexus 8.0 para Excel. Trabajo la versio Gx 8 con Visual Fox y SQL Server, si alguien sabe algo al respecto me avisa. Gracias.
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

RE:Reporte a Excel

Publicado por Patricio Ojeda V (194 intervenciones) el 14/03/2007 20:24:53
Averigua sobre el metodo "Grid.Toexcel" o tambien sobre los "ExcelDocument Data Type".

Las 2 te pueden servir dependiendo del que y como quieras exportar...

Saludos

Patricio Ojeda V
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

RE:Reporte a Excel

Publicado por ernesto Alvear (13 intervenciones) el 16/03/2007 22:47:21
En Genexus 8 puedes usar la funcion gxXlsCre con esta puedes pasar a excel un grid desde un work panel el formato es:

call('gxXlsCre', 'c:\pagos.xls' ,1,1,1,"subfile" )
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

RE:Reporte a Excel

Publicado por Carlos (11 intervenciones) el 21/03/2007 22:45:03
Ernesto, la función gxXlsCre que me envias me funciona perfectamente, me gustaria saber si conoces alguna forma de enviar a Excel los datos desde un For Each, sin que necesariamente exista un grid. 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

RE:Reporte a Excel

Publicado por ernesto alvear (13 intervenciones) el 22/03/2007 15:48:51
La verdad todos los reportes que necesito enviar al Excel lo realizo con esta función no conozco de algo que pueda enviar directamente desde el For each
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

RE:Reporte a Excel

Publicado por Patricio Ojeda V (194 intervenciones) el 22/03/2007 20:10:10
Creando una variable tipo "ExcelDocument" y abriendo la variable antes de hacer el for each puedes enviar los datos sin problemas. Esto quedaria algo asi:

confirm('¿Esta seguro de realizar la Exportación?',N)
if confirmed()

&nombre = "c:\Planilla_Exportacion"
&Ruta = &Nombre + '.xls'
&datosxls.Open(&RUTA)
&datosxls.SelectSheet("Acreditadores")
&datosxls.Clear()
&I=3

>>>haces aca tu for each y envias los datos<<<
for each ciucod
&datosxls.Cells(&i,1).text = str(&ciucod)
&datosxls.Cells(&i,2).text = ciunom
i+=1
endfor

&datosxls.Close()
msg("Proceso de Exportacion Finalizado... Por favor Verifique los Datos Exportados...")
endif

Saludos

Patricio Ojeda V
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

RE:Reporte a Excel

Publicado por Jose Luis (19 intervenciones) el 22/06/2007 08:11:14
AL HACER CORRER ESTE CÓDIGO PARA EXPORTAR UNA TABLA A UN DOCUMENTO EXCEL SE PEGAAAA.........
CUAL SERÁ EL PROBLEMA???? TRABAJO CON .NET GX9 Y SQLSERVER2000
GRACIAS DE ANTEMANO.

confirm('¿Esta seguro de realizar la Exportación?',N)
if confirmed()

&nombre = "c:\Planilla_Exportacion"
&Ruta = &Nombre + '.xls'
&datosxls.Open(&RUTA)
&datosxls.SelectSheet("Acreditadores")
&datosxls.Clear()
&I=3

>>>haces aca tu for each y envias los datos<<<
for each ciucod
&datosxls.Cells(&i,1).text = str(&ciucod)
&datosxls.Cells(&i,2).text = ciunom
i+=1
endfor

&datosxls.Close()
msg("Proceso de Exportacion Finalizado... Por favor Verifique los Datos Exportados...")
endif
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

RE:Reporte a Excel

Publicado por Carlos Andres (11 intervenciones) el 23/03/2007 22:22:58
Saludos amigos, ya solucioné lo que necesitaba, con este codigo puedo enviar a un archivo de excel los atributos que necesito, filtrados mediante un for each comun y corriente; el código me quedó en esta estructura, para quien lo necesite utilizar más adelante:

if &DocExcel.ErrCode <> 0
msg(&DocExcel.ErrDescription)
else
&CProd =2
For Each MiTabla
[where Condicion1] //opcional

&Variable1 = Campo1
&variable2 = Campo2
&variable3 = Campo3

&DocExcel.Cells(&CProd,1).Number = &Variable1
&DocExcel.Cells(&CProd,2).Number = &Variable2
&DocExcel.Cells(&CProd,3).Number = &Variable3
&CProd += 1
Endfor

&DocExcel.Cells(1,1).Text = 'NRO FACTURA'
&DocExcel.Cells(1,2).Text = 'FECHA FACTURA'
&DocExcel.Cells(1,3).Text = 'TOTAL FACTURA'

&DocExcel.Save()
msg(' ',nowait)
endif

Gracias por sus aportes. Carlos A.
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

RE:Reporte a Excel

Publicado por Patricio Ojeda V (194 intervenciones) el 23/03/2007 22:29:46
Que bueno que lo solucionaste.

Me parece si que esto esta demas:

&Variable1 = Campo1
&variable2 = Campo2
&variable3 = Campo3

Podrias tener:

&DocExcel.Cells(&CProd,1).Number = Campo1
&DocExcel.Cells(&CProd,2).Number = Campo2
&DocExcel.Cells(&CProd,3).Number = Campo3

Tan solo es una observacion,

Saludos

Patricio Ojeda V
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

RE:Reporte a Excel

Publicado por Diana (10 intervenciones) el 10/05/2007 19:34:29
mejor envia la informacion de tu consulta a un archivo .csv y crea aparte un archivo de excel al cual relacionas con este archivo csv generado , es decir creas una tabla dinamica con la informacion del csv.. y asi los usuarios podrian manejar de mejor forma la data desde excel

call('dbOpen','c:\temp\archivo.csv')

call('dbwrite','','Tipo Registro', 'Año ' , 'Mes ' , 'Fecha ' )

for each
....
.....
......
.....
call('dbwrite','', tipo, year(Fecha) ,&mes , fecha )

endfor

call(PAbrirHojaElectronica ,'Estadisticas)

==========================================
Procedure AbrirHojaElectronica

//pasar por parametro nombre de archivo

&RutaDat = '\\SERVIDOR'
&RutaUsr = 'c:\datos'

for each
where parCodigo=0
&RutaDat = trim(parRutaDat)
&RutaUsr = trim(parRutaUsr)
endfor

&Archivo = trim(&RutaDat) + '\' + trim(&NomHoja) + '.xls'
&Destino = trim(&RutaUsr) + '\' + trim(&NomHoja) + '.xls'

if file(&Archivo) .AND. &Archivo <> &Destino
call('dbcopy',&Archivo,&Destino)
endif

if file(&Destino)
call('dbExcel',&Destino)
else
&msg='No se encuentra el archivo '+&Destino+' !!!'
msg(&msg)
endif
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