当前位置: 代码迷 >> J2EE >> 关于java导出excel的有关问题
  详细解决方案

关于java导出excel的有关问题

热度:103   发布时间:2016-04-22 01:52:45.0
关于java导出excel的问题
java导出excel(用的是poi jar包),出现以下错误,下载对话框没有弹出来,请问,这是什么原因?怎样改?

2010-10-7 19:12:38 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:610)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112)
at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:178)
at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:118)
at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:77)
at org.apache.jsp.user_005flist_jsp._jspService(user_005flist_jsp.java:712)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
......

BaseAction代码如下(Struts2+Hibernate+Spring):
protected void downloadExcel(HSSFWorkbook workbook, HttpServletResponse response, String filename)
throws IOException {

OutputStream out = response.getOutputStream();

response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
response.setContentType("application/msexcel;charset=UTF-8");
workbook.write(out);

//out.flush();
out.close();

}

Action代码如下:
public String exportExcel() throws Exception {
UserInfoVO user = new UserInfoVO();
List list = userInfoService.exportUser(user);

// 填充数据
HSSFWorkbook workbook = this.fillDataToExcel(list);

Date date = new Date();
String currentDate = DateFormatUtil.getStringToDate(date, "yyyyMMdd");

if(null != workbook){
this.downloadExcel(workbook, this.getResponse(), "用户信息("+currentDate+").xls");
}
return "list";
}

------解决方案--------------------
返回null
  相关解决方案