Urgente: Gráficos en Datawindow

Guardar gráficos de un dw en un documento
Hola!
Tengo varios datawindows en mi aplicación que contienen tanto texto como imágenes (gráficos generados en el mismo PB con datos de tablas de la BD o imágenes fijas jpg o gif ), pero cuando lo guardo como xls (excel) u otro formato, en la parte donde van las imágenes no me las guarda, me pone solo un recuadro... Los gráficos generados con datos de tablas los he podido copiar, pero solo especificando el nombre del gráfico y se copia al clipboard, pero cómo hago para guardar todo el reporte completo, con todas las imágenes, en un solo documento, sin importar cuantas imágenes sean y su origen.

1 Respuesta

Respuesta
1
Lizbeth,
Esto mismo que solicitas me canse de buscarlo y a la fecha no he encontrado una solución satisfactoria, yo se lo que es querer encontrar una solución rápida a esta situación, por eso me atrevo a responderte sin una solución realmente completa. He aquí algunas de las respuestas que logre rescatar:
Primero: generar un archivo de la siguiente manera:
dw_1.saveas("c:\salida.xls", HTMLtable!, false)
Esto experota el dw con todas las imágenes, sin embargo el resultado no es el esperado dado que desajusta todo el formato.
Segunda: El siguiente código es muy bueno, me ha servido mucho porque te genera en lugar de la imagen la trayectoria de donde la esta tomando, y genera una salida separada por tabuladores de lo que realmente estas viendo en el dw, sin embargo tampoco te ofrece el resultado esperado. La idea aquí es, teniendo las trayectorias de las imágenes tratar de incrustarlas en el excel pero totalmente fuera de PB.
String ls_named,ls_txtname
String ls_defext = "xls"
String ls_filtro = "Archivo de Excel(*.xls),*.xls"
GetFileSaveName("Guardar Achivo",ls_txtname,ls_named,ls_defext,ls_filtro)
cdw_exportar.SaveAsAscii(ls_txtname, 't', '')
Tercera: la siguiente solución no la he probado porque me basto con la anterior
Puedes exportar la imagen fiel del resultado de un dw, a un archivo del tipo acrobat. A partir de allí puede hacer el resto,
sigue estos pasos.
*- instalar el acrobat writer, este instala una impresora virtual llamada ACROBAT DISTILLER.
*- una vez hecho esto, ejecutas tu datawindow, y la imprimes, si en tu proceso de impresion no presentas un cuadro de dialogo para seleccionar la impresora, entonces simplemente indicas e tu sistema que ACROBAT DISTILLER, es la impresora por omision.
El resultado de todo esto es la generación de un fichero de tipo pdf. El cual puede ser abierto con acrobat, y ademas contiene todo lo que puedes ver en pantalla y papel, de un datawindow.
a partir de este resultado ya puedes importar dicho fichero por medio de excel o word.
Cuarta: acabo de encontrar esto y no se si funcione, podrías probarlo, se supone que copia un dw a celdas especificas de un excel
long ll_numcols, ll_numrows, ll_c, ll_r
OLEObject xlapp, xlsub
int li_ret
// Este script copia todo el DW pero ud puede solo copiar las celdas
// que desee
ll_numcols = long(dw_1.Object.DataWindow.Column.Count)
ll_numrows = dw_1.RowCount()
xlApp = Create OLEObject // Crea el oleobject en la variable xlapp
// Se conecta a Excel y verifica el código de retorno
li_ret = xlApp.ConnectToNewObject( "Excel.Sheet" )
if li_ret < 0 then
MessageBox("Error Conectandose a Excel !",string(li_ret))
return
end if
xlApp.Application.Workbooks.Open("c:ejemplo.xls") // Abre archivo
// especifico Excel
xlApp.Application.Visible = true // Hace Excel visible
xlsub = xlapp.Application.ActiveWorkbook.Worksheets[1]
For ll_c = 1 to ll_numcols // Copia todas las filas de cada columna
For ll_r = 1 to ll_numrows
xlsub.cells[ll_r,ll_c] = dw_1.object.data[ll_r,ll_c]
Next
Next
//xlApp.Application.Activeworkbook.Save() // Guarda el archivo
// abierto
//xlApp.Application.Activeworkbook.SaveAs("c:ejemplo2.xls")
// Guarda con otro nombre
xlApp.DisConnectObject() // se desconecta de excel
Destroy xlapp
Quinta: En algún lugar leí que hay una solución de terceros que hace lo que solicitas, pero hay que comprarla y no creo que sea el caso, además que no recuerdo donde lo vi.
Por último si en algún momento encuentras la solución, te agradecería compartirla. [email protected]
¿Te sirvió para resolver tu pregunta?, me gustaría saber si te fue útil.
Y si no hay más dudas al respecto te pido de favor cerrar la pregunta
Hola!
Probé las 2 primeras opciones, pero no me genera nada de gráficos, ni con formato ni sin él.. ¿Tengo qué hacer alguna cosa extra aparte del código que me enviaste?
Muchas gracias!
Saludos :-)
Ok.
Opción 1.
dw_1.saveas("c:\salida.xls", HTMLtable!, false)
Funciona solo si el dw no es de tipo composite, ya generé un reporte con imágenes y lo genera completo, sin embargo el formato deja algo que desear, entre otras cosas porque las imágenes tienes que ajustarlas a un tamaño adecuado y te cuadricula toda la salida de datos. Prueba la salida de un dw que no sea del tipo composite y que tenga imágenes.
Opción 3
La acabo de probar, debido a que cuento con el adobe acrobat, y funciona con cualquier tipo de reporte por que realmente lo que haces es generar un archivo .pdf, después tienes que abrir este archivo con el acrobat y guardarlo como html 4.01 with CSS 100(*.htm), esto te genera un archivo .htm que lo puedes abrir con excel como htm. Ya vi el resultado y es bastante bueno, además lo puedes ver perfectamente con el browser. Espero que tengas la facilidad de probar con el acrobat writer.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas