miércoles, octubre 13, 2004

Trasladar un Datawindow a Excel sin perder el Formato

Todos los que utilizamos powerbuilder sabemos el poder que tiene el DataWindow. Una de sus características especiales es que permite guardar los datos recuperados en el control como una hoja de excel. Pero muchas veces hemos visto esta opcion como un poco limitada, por que?, supongamos que tenemos un reporte tipo Crosstab o hemos desarrollado uno con campos computados, cuando ejecutamos la funcion de salvar dicho reporte como una hoja de excel nos podremos dar cuenta que el formato se pierde y en vez tener la misma presentacion solo nos topamos con el conjunto de datos recuperados de la Fuente de informacion (bd, archivo externo,etc.). Imaginense tener un reporte en el cual existen grupos de datos y que ese formato no se respete al trasladarse a excel !!!. Bueno investigando un poco he encontrado que existe una alternativa a este problema :), a continuación detallo como funciona este proceso.

Excel desde la version 2000 (si no estoy mal), tiene la capacidad de poder interpretar Tablas de HTML ( Hyper Text Markup Language), esto quiere decir que si yo creo un archivo en notepad que contenga el siguiente codigo


<table>
<tr>
<td bgcolor="blue">Nombre </td>
<td bgcolor="blue">Apellido </td>
</tr>
<tr>
<td>Carlos </td>
<td>Lone </td>
</tr>
<table>


y lo Guardamos ya sea como una pagina html (prueba.html) o tambien como una archivo de excel (prueba.xls)

Luego de haber hecho esto podemos iniciar excel y abrir el archivo y nos daremos cuenta que excel interpretara perfectamente la tabla (inclusive con sus atributos de color).

Dada esta funcionalidad que tiene excel, nosotros podemos hacer lo siguiente con nuestros reportes para que al mandarlos a excel mantengan el formato.

Si el nombre de mi control es dw_reporte, entonces vasta con que ejecute esta funcion para que la magia se pueda hacer

dw_reporte.saveas("reporteenexcel.xls",HTMLTable! ,true)

lo que estamos haciendo es basicamente guardar la sintaxis de una tabla generada por el datawindow como un archivo de excel.

Un pequeño problema que he encontrado, en la version 9.0 no se si en la 8.0 tambien ocurre, es que cuando el datawindow genera el formato de la tabla con CSS, este define cada formato de la siguiente forma

nombre del formato {;background-color:#445566 .......}

el problema que existe aqui es que ese punto y como que aparece despues del primer corchete estropea la interpretacion del formato en excel, lo que he hecho para solucionar este problema y preservar el formato es que primero obtengo en un string la sintaxis y luego reemplazo "{;" por "{", en el siguiente articulo estare posiblemente publicando una muestra de este codigo.

Espero esto les pueda ser de mucha ayuda.


Saludos.

Ing. Carlos Augusto Lone Saenz
Guatemala


1 Comments:

At 13 de febrero de 2006 15:17, Anonymous Anónimo said...

Hola, realize los pasos q indicas en tu articulo, sin embargo caigo en un problema que tal vez tu ya resolviste.
Mi DW tiene anidados 5 dw del tipo Report los cuales muestran importes que al momento de ser grabados como HTML no se pintan.
He revisado en varios sites en busca de una alternativa pero no encontre nada, te agradecere si tienes la solucion.

Saludos cordiales.

 

Publicar un comentario

<< Home