Foros del Web » Programación para mayores de 30 ;) » Java »

Generar Excel desde JSP

Estas en el tema de Generar Excel desde JSP en el foro de Java en Foros del Web. Hola uso jxl.jar para generar un doxumento de Ms Excel mediante una jsp: <%@ page language="java" contentType="application/vnd.ms-excel; charset=ISO-8859-1" import=" jxl.Workbook, jxl.write.Label, jxl.write.Number, jxl.write.WritableSheet, jxl.write.WritableWorkbook, jxl.write.WritableFont, ...
  #1 (permalink)  
Antiguo 25/03/2010, 21:34
Avatar de xlugo2002  
Fecha de Ingreso: noviembre-2002
Ubicación: Puebla, México
Mensajes: 474
Antigüedad: 21 años, 5 meses
Puntos: 0
Generar Excel desde JSP

Hola uso jxl.jar para generar un doxumento de Ms Excel mediante una jsp:

<%@ page language="java" contentType="application/vnd.ms-excel; charset=ISO-8859-1"
import="
jxl.Workbook,
jxl.write.Label,
jxl.write.Number,
jxl.write.WritableSheet,
jxl.write.WritableWorkbook,
jxl.write.WritableFont,
jxl.write.WritableCellFormat
"
%>
<html>
<body>


<%
response.setHeader("Content-Disposition","attachment; filename=archivoexcel.xls");
.........
%>

Quisiera hacer lo mismo pero usando un JAVABEAN; es decir, tener una clase y NO una JSP que me genere el .xls y claro está que el navegador muestre la ventana de dialogo:
"Ha decidido abrir el archivo" , "Abrir con", "Guardar Archivo"
¿Es posible hacerlo?

Última edición por xlugo2002; 25/03/2010 a las 21:41
  #2 (permalink)  
Antiguo 26/03/2010, 16:06
Avatar de DiabloGuardian  
Fecha de Ingreso: noviembre-2008
Ubicación: Hidalgo
Mensajes: 215
Antigüedad: 15 años, 5 meses
Puntos: 3
Respuesta: Generar Excel desde JSP

si se puede, todo tu codigo de jxl donde procesas tu archivo de excel lo haces en un javaBean y haces un metodo que te guarde el excel pero en lugar de que lo escriba en un fichero te devuelva el excel en un arreglo de bytes, despues solamente en tu jsp pones algo como esto:

Código java:
Ver original
  1. response.setHeader("Content-Disposition", "attachment; filename=\"reporte-dinamico.xls\"");
  2.                 try{
  3.                     DataOutput dataOutput = new DataOutputStream(response.getOutputStream());
  4.                     byte[] bytes = excel.salvar(); // <---- aqui invoco el metodo del javabean que me devuelve el excel en un arreglo de bytes
  5.                     response.setContentLength(bytes.length);
  6.                     for(int i = 0; i < bytes.length; i++)
  7.                         dataOutput.writeByte(bytes[i]);
  8.                     response.getOutputStream().close();
  9.                 }catch(Exception e){
  10.                 out.println("No se pudo crear el archivo debido al siguiente error:<br>"+e.toString());
  11.                 }

bueno, para hacer esto y lo hago con la libreria POI si gustas te puedo pasar un ejemplo...

saludos
__________________
-=:[ Lo importante no es saber todo, sino saber buscar ]:=-
  #3 (permalink)  
Antiguo 28/03/2010, 19:46
 
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!!!
  #4 (permalink)  
Antiguo 05/08/2010, 02:14
 
Fecha de Ingreso: junio-2010
Mensajes: 4
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Generar Excel desde JSP

Buenas!

Se que este tema lleva ya unos meses sin estar activo y no se si sería mejor abrir un post nuevo o no. En principio escribo aquí y en caso necesario abro uno nuevo.

Estoy trabajando en una aplicación en la tengo que añadir la posibilidad de exportar a excel los datos que se muestran en dos tablas distintas de mi jsp. Mi problema es que nunca he hecho esto y no tengo mucha idea de hacerlo

Por lo que he estado leyendo lo más normal es usar las librerías jxl o poi. En principio me había decantado por jxl ya que he leido comentarios de que es mas sencilla de usar.

No tenía muy claro como hacerlo pero al leer este post me ha convencido hacerlo através de un servlet pero no he entendido la parte del servicio que comenta sonicJava ya que entiendo que no haría falta usar ninguna de las librerías anteriores ya que bastaría con generar una tabla html con los datos que me interesasen. Lo he entendido bien? En este caso, donde tengo que crear y ejecutar el servicio? Otra cosa, el excel tomaría los formatos de la tabla HTMl que yo haya definido?

Muchas gracias por todo y perdonad mis pocos conocimientos en el tema.

Un saludo.

Etiquetas: excel, jsp
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:56.