Power Builder - Manejo de OLE Excel

 
Vista:

Manejo de OLE Excel

Publicado por D.Neko (3 intervenciones) el 24/11/2003 14:55:21
Hola amigos!!

Les cuento mi problema: estoy trabajando con DW y me pidieron que las pasara a EXCEL, para ello ocupe la funcion SaveAs , pero esta no me guarda el formato de la DW, entonces probe con exportar la DW a HTMLTable y despues a EXCEL lo cual funciona lo mas bien, salvo que me añade unas columnas y filas, pero necesito aplicarle formarto a las celdas y eso no tengo idea como se hace, es decir:

¿Cómo trabajo con un objeto OLE 2.0 de excel?; ya que necesito dar formato a una hoja de trabajo (worksheet) antes de introducir los datos en ella (color, ancho de celdas, tipo de letra, etc.).,

Y relacionado con esto, como hago para pasar datos de un Cursor a un objeto OLE 2.0 Excel; sin necesidad de pasar por un DW.

Ya que pretendo darle formato 'manual' al worksheet y despues introducir los datos para que me genere un 'excel' de manera aceptable.

Esperando por vuestra ayuda se despide

D.Neko

P.D.: los que quieran saber como pasar de un DW a Excel me pueden preguntar.... por cierto recien llevo como un mes trabajando en Powerbuilder 8
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:Manejo de OLE Excel

Publicado por Jorge (900 intervenciones) el 24/11/2003 17:43:28
Hola.

Realiza una busqueda en los post, de este foro, este tema se ha tratado muchas veces, es mas, un par de post anteriores a este, ahy una consulta sobre lo mismo, fijate la respuesta de Oscar alli invoca a un post directamente.
Ahora lo que tu buscas, es lo que todos buscamos. pasar una
DW a Excel con todos sus formatos.
Suerte.
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:Manejo de OLE Excel

Publicado por D.Neko (3 intervenciones) el 24/11/2003 19:02:58
Hola Jorge

Gracias por la pronta respuesta.... antes de postear hice lo que me dices me lei como 100 mensajes (busque por EXCEL y OLE, por separado), encontre unas cosas y las busque pero no me sirvieron mucho, por eso coloque la nota. De todas formas muchas gracias... =o)

Saludos!!
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:Manejo de OLE Excel

Publicado por Oscar (1178 intervenciones) el 25/11/2003 01:21:56
Es cierto que se expusieron varias respuestas a ese problema; pero nínguna óptima. Esta respuesta es nueva en este foro, no en otros :-)

Si pretendes dar formato 'manual' a tu worksheet y despues introducir los datos; entonces ve:

http://www.powerbuilder.org/modules.php?name=News&file=article&sid=68&mode=&order=0&thold=0

Puede que ese ejemplo ya hayas visto; pero existen dos errores sin importancia:
* Debes colocar su rayita "c:\ejemplo.xls" a:
xlApp.Application.Workbooks.Open("c:ejemplo.xls") //,false,true

* Verificá si te generan filas demás.

Para colocar encabezados, creo que podrías hacerlo con:
//xlsub.cells[1,1] ="encabezado1"
//xlsub.cells[1,2] ="encabezado2"

Después de:
xlsub = xlapp.Application.ActiveWorkbook.Worksheets[1]
Luego, debes insertar los datos una fila más abajo, creo con:
xlsub.cells[ll_r+1,ll_c] = dw_1.object.data[ll_r,ll_c]

Verificá sólo son ideas para mejorarlas.

No sé cómo las propiedades para dar formato a excel desde PB; en el caso de Word es más fácil colocar negrita, fuente, etc:

http://www.sybase.com/detail?id=47980

Finalmente, para hacer bordes de celda desde PB, alguien propuso el uso de DDE ????
http://www.todoexpertos.com/herramientas/leermsgpublico.aspx?idproceso=199295

Seguimos investigando...
Un saludo.
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:Manejo de OLE Excel

Publicado por D.Neko (3 intervenciones) el 25/11/2003 16:30:32
Hola Oscar,

Muchas gracias por la ayuda, como dices ese ejemplo ya lo he visto y he sacado algunas ideas de ahi. Lo de usar DDE tambien lo he pensado en hacer ... pero mientras tanto estoy viendo alguna solucion con 'generar' de manera manual el worksheet y he podido hacer varias cosas, ahora estoy pegado viendo como seleccionar una celda para aplicarle formato ya que solo se lo puedo dar a la celda 1,1. Otra cosa que probe fue insertar un objeto ole de excel dentro de una DW pero a diferencia de la DW tradicional no se puede dar formato ya que automaticamente los valores son colocados en las celdas y elimina el formateo que hayas hecho.... pero bueno, como dices
Seguimos investigando....

Saludos!!
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
sin imagen de perfil
Val: 5
Ha aumentado 1 puesto en Power Builder (en relación al último mes)
Gráfica de Power Builder

Manejo de OLE Excel

Publicado por Juan Manuel (8 intervenciones) el 07/01/2024 16:34:03
Buenos dias amigo, aqui te paso una rutina para exportar un dw a excel formateado, quiero decir como lo estas viendo tu en una vista previa va a pasar a excel, lo unico debes buscar las siguientes librerias:

1-. dw2xlsdemo_pb125_2511.pbd (esta la debes referenciar en la lista de libreria de tu sistema) System tree->objeto aplicacion->boton derecho->propiedades->browse

2-.pb2xls.dll

**** RUTINA DE EXPORTACION A EXCEL ****

Yo la coloque en un boton en mi pantallla de vista previa de reportes o listados.

long li_result, li_ret,li_filas
string ls_archivo,is_Path,ls_File,ls_Type,ls_Mask,ls_pathname_ant

OLEObject myoleobject
n_dwr_service_parm lnvo_parm
lnvo_parm = CREATE n_dwr_service_parm
lnvo_parm.ib_hide_grid = TRUE //Ocultar el grid de la hoja de excel
SetPointer(Hourglass!)

ls_pathname_ant = GetCurrentDirectory ( )
li_filas= dw_1.rowcount()
If li_filas > 0 then
ls_Type = "*.xls"
ls_Mask = "Archivos Excel (*.XLS), *.XLS"
/* Permite seleccionar el camino */
If GetFilesaveName("Seleccione un archivo en el directorio deseado", is_Path, ls_File, ls_Type, ls_Mask) = 1 THEN
ls_archivo = is_Path
End if
li_ret = uf_save_dw_as_excel_parm(dw_1, ls_archivo, lnvo_parm)
If li_ret =1 THEN
myoleobject = CREATE OLEObject
/*El ConnectToObject es una variable OLEObject de PowerBuilder que se asocia */
/* a un objeto OLE e inicia un servicio en la aplicación. */
li_result = myoleobject.ConnectToObject(ls_archivo)
IF li_result = 0 THEN
myoleobject.application.workbooks(1).ActiveSheet.PageSetup.Orientation = 2
myoleobject.application.workbooks(1).ActiveSheet.PageSetup.ORDER = 2
myoleobject.application.workbooks(1).ActiveSheet.PageSetup.BlackAndWhite = FALSE
myoleobject.application.workbooks(1).ActiveSheet.PageSetup.Zoom = FALSE
myoleobject.application.workbooks(1).ActiveSheet.PageSetup.FitToPagesWide = 1
myoleobject.application.workbooks(1).ActiveSheet.PageSetup.FitToPagesTall = FALSE
myoleobject.application.Windows(1).Visible =TRUE
//Salvar un archivo XLS
myoleobject.application.workbooks(1).save()
End if
/*Cerrar la aplicación excel */
myoleobject.application.Windows(1).CLOSE //Cerrar la ventana de Expense de la aplicación Excel
/*Desconectar el servicio */
myoleobject.DisconnectObject()
/*Destruir el objeto del Servicio para Liberar espacio en memoria */
DESTROY myoleobject
MESSAGEBOX("Información","El archivo se ha exportado correctamente a la dirección indicada")
else
MESSAGEBOX ("Advertencia","Error al exportar el archivo , intente nuevamente", StopSign!)
RETURN
End if
Else
MESSAGEBOX("Advertencia","No existen registros para exportar", StopSign!)
End if
ChangeDirectory ( ls_pathname_ant )

La otra forma es utilizar el dw_x.SaveAs(), pero este solo te va a salvar las columnas de las tablas.

Espero que te sirva , saludos
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