Servlet的 - 出口效应初探到Excel文件(Servlet - export reponse

2019-09-01 01:28发布

我无法出口从一个servlet到一个Excel文件的响应。 请参阅下面的代码:

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>");

点击时提交按钮产生excel工作表不包含任何值。 见Export.java当点击提交按钮时调用。

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");
    }
}
}

此外,已经观察到,如果我在写下面的代码Test.java ,其操作正常,并且excel表确实包含表中的值。

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

有没有什么办法的输出转发Export.javaTest.java点击提交按钮时。

Answer 1:

最后,我找到了解决办法! 我存储所有out.print()的东西变成一个StringBuffer 。 然后使用getServletContext().setAttribute("test", Buffer); 我转发的全部内容到另一个servlet,并从其他的servlet我取回使用数据StringBuffer data = (StringBuffer) getServletContext().getAttribute("test");

最后,

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

做了工作。



Answer 2:

你有打印响应之前调用的setContentType。 您不能打印你的HTML表格,然后让用户点击一个按钮,将他们带到一个完全不同的servlet,什么也不做,但设置的setContentType到Excel和期待,不知怎的,它会记住你的HTML表格。 你也应该看看再找个对Java(如Apache的POI)的Excel库,并使用应用程序/ msexcel的,而不是依赖于应用程序/ vnd.ms - Excel将HTML转换到Excel,如果这个项目是为了有任何真实世界实用性。



文章来源: Servlet - export reponse to Excel file