问题描述
我无法将响应从servlet导出到excel文件。请参阅以下代码:
I'm unable to export the response from a servlet to an excel file. Please see the code below :
Test.java:
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
。
The submit button when clicked produce an excel sheet which doesn't contain any values. See the Export.java
which is called when submit button is clicked.
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表确实包含表值。
Also, it has been observed that if i write the below code in Test.java
, its working fine and the excel sheet does contain the table values.
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=users.xls");
有没有办法转发 Export.java $的输出c $ c>到
Test.java
当提交按钮被点击。
Is there any way to forward the output of Export.java
to Test.java
when the submit button is clicked.
推荐答案
最后,我找到了一个解决方案!我将所有的 out.print()
东西存储到一个 StringBuffer
中。然后使用 getServletContext()。setAttribute(test,Buffer);
我将整个内容转发到另一个servlet中,从其他servlet转发我使用 StringBuffer data =(StringBuffer)getServletContext()。getAttribute(test);
。
Finally, I found a solution! I stored all the out.print()
stuff into a StringBuffer
. Then using getServletContext().setAttribute("test", Buffer);
I forwarded the whole content into another servlet and from the other servlet I retrieved the data using 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());`
工作。
这篇关于Servlet - 导出对Excel文件的响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!