Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/03/2010, 19:46
sonicJava
 
Fecha de Ingreso: marzo-2010
Mensajes: 18
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Generar Excel desde JSP

Hay un truco mas fácil, un servlet y un servicio para procesar tu excel

1) El que procesa el excel, lo unico que hace es generar un html con los valores de tu excel,
hasta le puedes poner colores y todo eso, queda muy bien, construye una tabla en html.
donde tenga desde html tag, hasta body y tu table en html.

2) Cuando mandes llamar el servlet, utiliza el servicio que procesa al excel, te regresara una simple cadena, te pongo un ejemplo del servlet, este te regresará lo que quieres de guardar el archivo o abrirlo.
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import com.ecm.ecmframework.IEcmResultSet;

public class DoReport extends HttpServlet {
public DoReport() {
try {
jbInit();
}
catch (Exception ex) {
ex.printStackTrace();
}
}

private static final String CONTENT_TYPE = "text/xls";
public void init() throws ServletException {}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
String resultSet = (String) request.getAttribute("ResultSet");
response.setContentType("application/vnd.ms-excel");
response.addHeader("Content-Disposition", "attachment; filename=reporte.xls");
PrintWriter data = response.getWriter();
if ("".equals(resultSet))
{ StringBuffer sb = (StringBuffer) request.getAttribute("sbresultset");
if (sb != null)
{ //opcion 1
for(int i=0; i< sb.length(); i++)
data.write(sb.charAt(i));
//opcion 2data.write(sb.toString());
sb = null;
request.setAttribute("sbresultset", null);
System.gc();
}
else data.write(resultSet);
}
data.close();
}











public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
String resultSet= (String) request.getAttribute("ResultSet");
response.setContentType("application/vnd.ms-excel");
response.addHeader("Content-Disposition","attachment; filename=reporte.xls");
PrintWriter data =response.getWriter();
data.write(resultSet);
data.close();
}
//Clean up resources
public void destroy() {
}

private void jbInit() throws Exception {
}

}







Saludos!!!