Yo soy incapaz de exportar la respuesta de un servlet a un archivo de excel. Por favor, consulte el siguiente código:

Test.java:

 @Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html");
out = response.getWriter();
out.print("<form name=\"test\" method=\"post\" action=\"Export\">");
out.print("<table border=\"1\" cellpadding=\"3\" bordercolor='black'");
out.print("<tr>");
out.print("<td>1</td>");
out.print("<td>hello how are you?</td>");
out.print("</tr>");
out.print("</table>");
out.print("<td><input type=\"submit\" name =\"submit1\" value=\"Export To Excel\"></td>");
out.print("</form>");

El botón enviar cuando se hace clic producir una hoja de excel, el cual no contiene ningún valor. Ver el Export.java que se llama cuando se presenten clic en el botón.

Export.java

public class Export extends HttpServlet {

@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    String submit1 = request.getParameter("submit1");
   if (submit1 != null) {
        response.setContentType("application/vnd.ms-excel");
        response.setHeader("Content-Disposition", "attachment; filename=users.xls");
    }
}
}

También, se ha observado que si escribo el siguiente código en Test.java, su trabajo bien y la hoja de excel contiene los valores de la tabla.

response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=users.xls");

¿Hay alguna manera de avanzar la salida de Export.java a Test.java cuando el botón enviar que se hace clic.

  • Por qué simplemente no declarar que dos línea de respuesta a Test.java?
  • pero ese no es mi propósito 🙁 ! No de otra manera?
InformationsquelleAutor sree127 | 2013-04-24

2 Comentarios

  1. 4

    Finalmente, he encontrado una solución! He guardado todos los out.print() cosas en un StringBuffer. A continuación, utilizando getServletContext().setAttribute("test", Buffer); me reenvían todo el contenido a otro servlet y desde el otro servlet puedo recuperar los datos utilizando StringBuffer data = (StringBuffer) getServletContext().getAttribute("test");.

    Y, finalmente,

    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-Disposition", "attachment; filename=sample.xls");
    response.getWriter().write(data.toString());`

    hizo el trabajo.

  2. 1

    Usted tiene que llamar a setContentType antes de la impresión de la respuesta. No se puede imprimir el HTML de la tabla y, a continuación, hacer que el usuario haga clic en un botón que lleva a una completamente diferente servlet que no hace nada pero se establece el setContentType a Excel y esperar que de alguna manera recuerda el HTML de la tabla. También usted realmente debe conseguir un Excel de la biblioteca de Java (por ejemplo, Apache POI) y el uso de la aplicación/msexcel en lugar de confiar en application/vnd.ms-excel para convertir HTML a Excel, si este proyecto está destinado a tener ningún mundo real utilidad.

Dejar respuesta

Please enter your comment!
Please enter your name here