Son varias las solicitudes que me han hecho para que explique cómo exportar un reporte desde Apex a Microsoft Excel, por esto, en este artículo voy a definir un paso a paso de cómo lograr esto, con el uso de un paquete desarrollado por mi amigo Denes Kubicek para tal propósito.
Existen dos versiones de este paquete, una para realizar la exportación desde Apex y otra para hacerlo desde Oracle XE, al final de este artículo podrán encontrar los enlaces para descargar ambos paquetes, los cuales muy gentilmente han sido puestos a disposición de todos por mi amigo Denes.
Antes de entrar en materia , debo mencionar que Apex tiene definidos procedimientos estándar para realizar la exportación de reportes a formatos variados como Excel, Word y PDF, sin embargo, para poder utilizar esas funcionalidades, se hace necesario contar con el componente BI Publisher de Oracle, el cual requiere de una licencia válida, la que a su vez tiene un costo elevado y no todos podrán contar con ella, por lo que esta alternativa que les propongo, puede resultarles de mucha utilidad.
El procedimiento para instalar el paquete y poder exportar reportes a Excel es el siguiente:
- Descargue el paquete desde el enlace que se proporciona al final de este artículo.
- Descomprima el contenido del archivo.
- Instale el paquete en el esquema del usuario que desea utilizarlo:
- Ejecute una instancia de SQL: DRIVE: sqlplus usuario/clave@conexion
- @export_to_excel_pkg.sql
- Ingrese a la aplicación Apex
- Si no cuenta con una «Página 0» definida, créela.
- Ingrese a Componentes Comunes y luego a Procesos de Aplicación
- Haga clic en el botón «Crear >» y cree un proceso con las siguientes características:
- Nombre: DOWNLOAD_EXCEL
- Secuencia: 1
- Punto: En carga: Antes de cabecera (cabecera de plantilla de página)
- Haga clic en el botón «Siguiente >»
- En el texto de proceso ingrese el siguiente segmento de código:
BEGIN
export_excel_pkg.print_report (:t_region_id, :t_excel_name, :t_page);
END;
- En el Mensaje de error escriba el mensaje que desee que aparezca en caso de que se produzca un error
- Haga clic en el botón «Siguiente >»
- Haga clic en el botón «Crear Proceso»
- Cree los siguientes elementos de aplicación: T_EXCEL_NAME, T_PAGE y T_REGION_ID:
- Ingrese a Componentes compartidos y a Elementos de aplicación
- Para cada uno de los elementos haga clic en el botón «Crear >»
- Ingrese el nombre de cada elemento
- Haga clic en el botón «Crear»
- Ingrese al reporte que desea exportar y diríjase a la sección de Regiones
- En la región del reporte deseado, haga clic en el enlace Informe
- Allí, en la sección de Exportación de Informe, seleccione «Sí» en el campo «Activar Salida de CSV»
- En el campo «Etiqueta de enlace», ingrese el siguiente código:
<a href="f?p=&APP_ID.:0:&SESSION.:DOWNLOAD_EXCEL:NO::T_REGION_ID, T_EXCEL_NAME,T_PAGE:#REGION_ID#,my_report,&APP_PAGE_ID."> Exportar a Excel</a>
- Haga clic en la pestaña Atributos de Impresión y seleccione «Sí» en el campo «Activar Impresión de Informe»
- Haga clic en el botón «Aplicar Cambios»
Una vez realizado esto, en el pie de página de la región del reporte le aparecerá un enlace con la leyenda «Exportar a Excel», el cual le permitirá exportar a Excel su reporte, sin embargo, hay algunas consideraciones a tomar en cuenta:
- Los puntos 1 al 8 del procedimiento anterior, se deben realizar una única vez para cada espacio de trabajo en que desee implementar esta funcionalidad, sin embargo, si los espacios de trabajo pertenecen a un mismo esquema (usuario de base de datos), la instalación del paquete (puntos 1 al 3) se realizan una sola vez.
- En el código del punto 12, el segmento que dice «my_report», es el nombre con que se exportará el reporte a Excel, por tanto, lo puede cambiar a su antojo, para que este nombre refleje el contenido del reporte exportado.
- El segmento del punto 12 que dice «Exportar a Excel», es el texto que se muestra para el enlace de exportación y también lo puede manejar a su antojo, puede poner el texto que desee, o aún incluir alguna imagen.
- No utilice el sufijo «#OWNER#» en el código del query del reporte, esto le producirá un error y no obtendrá el resultado deseado.
- El esquema (Usuario de base de datos) que ejecute este procedimiento, necesita derechos o permisos de ejecución sobre el paquete DBMS_SQL.
- El paquete NO FUNCIONARÁ para reportes del tipo «Función retornando SQL».
- Si los reportes incluyen una cláusula «group by», necesita modificar el paquete y utilizar la sintaxis v(‘ITEM’) en lugar de (select v(‘ITEM’) from dual)
Con esto es suficiente para que pueda exportar sus reportes a Excel, lo único que le resta por hacer es bajar el paquete, instalarlo y empezar a exportar sus reportes.
Suerte y espero tenerlos de regreso pronto con sus comentarios, preguntas y sugerencias. A continuación los enlaces de descarga de los paquetes para exportar a Excel.
Paquete exporta reportes desde Apex
Paquete exporta reportes desde Oracle XE
Hola.
Creo que hay un error. EN el punto 3 no se debe seleccionar lo que dices, si no, cada vez que intentas cargar la página intenta hacer la exportación.
Más bien, habría que poner la última (on demand)
Salud!
No, era otra cosa. Mirando el pdf de la descarga, en el punto 3 hay que añadir el tipo de condición Request = Expression1 (yo lo tengo en inglés) y bajo Expression 1 hay que poner DOWNLOAD_EXCEL.
Entonces sí va como tú dices.
Salud!
Y una tercera cosa.
Para que funcione correctamente, debe irse también al Report Atributes, seleccionar el campo [row selector], editarlo y decir que NO donde está la opción Include in Export, si no, da un error a la hora de hacer la query, y no exporta datos.
P.D. POr cierto, ¿hay alguna forma de importar en lugar de exportar? Aunque sea desde un texto plano con un separador. Ya sé que el imp de oracle funciona muy bien, pero los usuarios quieren tener los datos en una excel e importar a la tabla desde un botón igual que hacen la exportación.
Gracias
Salud!