viernes, 19 de septiembre de 2008

Generando planillas Excel con SQL*plus

Una de los comandos más interesantes de SQL*plus para formatear salida, es MARKUP HTML. Con el, podemos generar código HTML listo para mostrar en cualquier navegador.

Sintaxis básica: SET MARKUP HTML ON

Ejemplo:

SQL> set markup html on
SQL> spool tablas.html
SQL> select table_name, tablespace_name from user_tables;
SQL> spool off


Visto en el navegador, nuestra consulta de dos columnas es formateada como una tabla HTML.





Lista para Excel


Lo interesante de Excel es que permite ver páginas html como si fuesen planillas. Cuando abrimos el spool generado por SQL*plus, tenemos una planilla Excel pronta para usar.

Como el formato HTML generalmente es abierto por otras aplicaciones, podemos generar el spool como .xlt, y de esta forma abriremos el archivo en Excel con solamente dos clicks.


6 comentarios:

Unknown dijo...

Hace unos dias un compañero me preguntó como podría generar un archivo excel desde Oracle.

No conocia esto, me parece muy simple y eficaz.

Gracias

Xampi82 dijo...

Disculpa, desde que versión puedes ejecutar este tipo de set? Lo he intentado y me indica:

SQL> set markup html on
opción SET desconocida "markup"

Usamos la versión 8 y posiblemente no tenga aún implementada dicha opción. ¿Puedes contestarme a mi correo? Muchas gracias.

lfer dijo...

Hola,

Los reportes en HTML están disponibles a partir de la version de SQL*Plus 8.1.6. Puedes confirmar tu versión?
Cuando ingresas a SQL*Plus te informa la versión actual.

De todas formas si tu versión es inferior, siempre puedes instalarte otro cliente mas nuevo (9i, 10g, 11g) y aun así conectarte a tu base de datos Oracle8i. El feature estará disponible en la nueva versión que instales.
Recuerda que no tienes límite de versiones entre productos instalados en la misma máquina.

Xampi82 dijo...

Amplío la información, concretamente, al conectar todo lo que me pone es:

SQL*Plus: Release 3.3.4.0.0 - Production on Wed Dec 03 14:33:21 2008

Copyright (c) Oracle Corporation 1979, 1996. All rights reserved.


Conectado a:
Oracle8i Enterprise Edition Release 8.1.7.4.0 - 64bit Production
With the Partitioning option
JServer Release 8.1.7.4.0 - 64bit Production

No actualizo a una versión cliente superior porque es la versión utilizada en el trabajo.

Un saludo!

lfer dijo...

La versión de tu SQL*Plus parece ser anterior a la propia versión de la base de datos (8i).

Estoy suponiendo entonces que estás ejecutando SQL*Plus en el cliente. Como simple duda, esa versión vino incluída con algun producto como DEVELOPER 2000? Puedes ver donde esta el ejecutable.

Si aún no quieres instalar nada en tu cliente, puedes intentar ejecutar SQL*Plus desde el propio servidor de base de datos, si es que tienes acceso via Telnet.
Esa versión debería servirte ya que se corresponde con la versión de la base.

Xampi82 dijo...

Efectivamente el SQL*Plus que ejecutamos pertenece al paquete de DEVELOPER 2000 y no tengo acceso vía TELNET. De todas formas muchas gracias, intentaré conseguir una versión cliente de SQL*Plus posterior. Muchas gracias.