Páginas

6/10/14

Hacer reporte en Excel con java. Librería POI de apache Parte 2, desde aplicación web JSF.

Hacer reporte en Excel con java. Librería POI de apache
Java excel. Librería POI de apache Parte 2, desde aplicación web JSF.

Java excel. Librería POI de apache Parte 2, desde aplicación web JSF.




En la entrada pasada estuve explicando cómo generar un Excel desde Java, ahora siguiendo los mismos pasos del ejemplo anterior vamos a generar el Excel desde una aplicación web, desde JSF. Creamos un archivo .jsp que es el que llamaremos desde el faces-config.xml para exportar el archivo Excel. Imagínate que presionas un botón para generar el reporte, en el action llamas a un método en tu backing bean.


<af:commandButton>


Cuando presionas el botón llamas al método de tu backing bean que se llama exportarExcel() el cual retorna un String que indica a que pagina dirigirnos mediante las reglas del faces-config.xml, este es el código del método:

Metodo: exportarExcel
      
public String exportarExcel() {
 dataModelReporte();
 HSSFWorkbook hssfWorkbook = obtenerExcel(contenidoCeldas,
   cabecerasCeldas, "datoJavaWebExcel");

 FacesContext context = FacesContext.getCurrentInstance();
 context.getExternalContext().getSessionMap()
   .put("tipo", "excel");
 context.getExternalContext().getSessionMap().put("archivo", hssfWorkbook);
 dataModelReporteEvaluacion = null;

 return "exportarExcel";
}
    


Como observamos siguiendo los pasos de la entrada anterior no hay problema, solo que esta vez utilizamos el FacesContext para almacenar al archivo, aquí esta la regla de configuración en el archivo faces-config.xml:

Metodo: exportarExcel
 

  *
    
      exportarExcel
      exportarExcel.jsp
  

    


Como ven la regla estamos diciendo que tenemos que ejecutar el siguiente .jsp:

exportarExcel.jsp
      
<%@ page import="org.apache.poi.hssf.usermodel.HSSFWorkbook"%>
<%@ page import="java.util.*"%>
<%
 String contentType = (String) session.getAttribute("tipo");
 HSSFWorkbook hssfWorkbook = null;
 OutputStream outputStream = null;
 try {
  if (contentType.equals("excel")) {
   hssfWorkbook = (HSSFWorkbook) session.getAttribute("archivo");
   response.setContentType("application/vnd.ms-excel");
   response.setHeader("Content-Disposition",
     "attachment; filename =reportexcel.xls");
   outputStream = response.getOutputStream();
   hssfWorkbook.write(outputStream);
   out.clear();
   out = pageContext.pushBody();
  }
 } catch (Exception e) {
  e.printStackTrace();
 } finally {
  if (outputStream != null)
   outputStream.close();
 }
%>
    


No hay comentarios :

Publicar un comentario