<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="application/vnd.ms-excel" language="java"
import="java.util.*,com.Export"%>
<%
response.setHeader("Content-Disposition","attachment;filename=exportdata.xls");
response.setContentType("application/vnd.ms-excel");
Export ex = new Export();
ex.buildStudentExcel("exportdata.xls",response.getOutputStream());
%>
<%
out.clear();
out=pageContext.pushBody();
%>
上面的是jsp中的代码,直接访问能弹出下载框
<action name="expExcel" class="measureAction" method="expExcel" >
<result name="success" >/auditcheck/measure/123.jsp</result>
</action>
这是struts2中的配置,请求成功后跳到上面的jsp页面,后台执行了,但是没有弹出下载框,请问哪里出现问题了?
19 个解决方案
#2
我记得以前遇到一个算是类似的问题吧,如果这个改成action的话,
直接往返回流中写execl数据并且还有返回值的话,会出现一个异常-流冲突,
如果把返回值修改为null,就能正常返回execl表了。
直接往返回流中写execl数据并且还有返回值的话,会出现一个异常-流冲突,
如果把返回值修改为null,就能正常返回execl表了。
#3
推荐pageoffice 很强大的一款插件,轻松实现office编辑打印导出
#4
有道理,学习了,那JSP要怎么处理
#5
不太明白,请问是把action中的返回值改为null嘛?如果action中的返回值改为null,struts2怎么知道要跳转到哪个页面呢?
#6
那么页面就不会跳转,而是直接返回一个execl报表。
如果想既跳转并且返回execl报表的话可以尝试两次请求。
我记得当初我错误的原因是生成一个out流,这个流与jsp自身的输出流冲突。
你先看看是不是这个原因,先找我说的试试,如果能返回execl表了再说。
#7
你是怎么确定成功跳转到这个页面的,你弹出框是怎么写的,有js错误吗?
#8
我你这是struts2的问题 不是poi的问题
#9
class="measureAction" 这个是不是要写包全名啊
#10
class="measureAction" 这个是不是要写包全名啊
是写数据那个方法走了,所以我肯定是跳转成功了,而且数据肯定也写进了excel,这我打断点跟过了,只不过执行完写数据就没反应了,没有弹出保存框。
#11
你是怎么确定成功跳转到这个页面的,你弹出框是怎么写的,有js错误吗?
后台没报错误,也没有js错误。
#12
我记得以前遇到一个算是类似的问题吧,如果这个改成action的话,
直接往返回流中写execl数据并且还有返回值的话,会出现一个异常-流冲突,
如果把返回值修改为null,就能正常返回execl表了。
不太明白,请问是把action中的返回值改为null嘛?如果action中的返回值改为null,struts2怎么知道要跳转到哪个页面呢?
那么页面就不会跳转,而是直接返回一个execl报表。
如果想既跳转并且返回execl报表的话可以尝试两次请求。
我记得当初我错误的原因是生成一个out流,这个流与jsp自身的输出流冲突。
你先看看是不是这个原因,先找我说的试试,如果能返回execl表了再说。
我的做法:
1:先经过一个action去数据库中查到了要导出的数据。把数据封装到session中
2:action执行成功后,通过struts2跳到一个jsp页面,在该页面获取session中的数据。设置头信息。
调用写入数据到excel文件的方法。
现在的结果是:写数据到excel的方法走了(我打断点跟了),但是前台页面没有弹出保存框,所以我也不知道这数据写哪里去了。
#13
POI生成excel弹出框是response出来的,那么你的struts不需要做任何的跳转
#14
数据写完,记得关闭输出流,不然页面不会有反应
#15
数据写完,记得关闭输出流,不然页面不会有反应
try {
out.flush();
wb.write(out);
out.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("Out is closed ");
}
已经关流了
#16
response.setHeader("Content-Disposition","attachment;filename=exportdata.xls"); response.setContentType("application/vnd.ms-excel");
这两句应该写到你的action的方法里
这两句应该写到你的action的方法里
#17
response.setHeader("Content-Disposition","attachment;filename=exportdata.xls"); response.setContentType("application/vnd.ms-excel");
这两句应该写到你的action的方法里
不是这个原因。
#18
我记得以前遇到一个算是类似的问题吧,如果这个改成action的话,
直接往返回流中写execl数据并且还有返回值的话,会出现一个异常-流冲突,
如果把返回值修改为null,就能正常返回execl表了。
不太明白,请问是把action中的返回值改为null嘛?如果action中的返回值改为null,struts2怎么知道要跳转到哪个页面呢?
那么页面就不会跳转,而是直接返回一个execl报表。
如果想既跳转并且返回execl报表的话可以尝试两次请求。
我记得当初我错误的原因是生成一个out流,这个流与jsp自身的输出流冲突。
你先看看是不是这个原因,先找我说的试试,如果能返回execl表了再说。
谢谢各位哈,现将解决办法粘出来跟大家分享一下:
struts配置改成了如下配置:
<!-- 导出excel -->
<action name="expExcel" class="measureAction" method="ExcelExport" >
<result name="excel" type="stream">
<param name="contentType">application/vnd.ms-excel</param>
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<param name="inputName">excelFile</param>
</result>
遇到的问题:
jsp页面原来一直弹不出保存框,排除了各种原因,最后发现了,在执行这个请求的时候,不能用ajax请求,即$.post(uri),这种就是出不来,同样的代码,jsp用form表单请求和<a href="">a标签请求都能出来,具体原因我也说不清楚,问题就出在这里了
#19
response.setHeader("Content-Disposition","attachment;filename=exportdata.xls"); response.setContentType("application/vnd.ms-excel");
这两句应该写到你的action的方法里
谢谢各位哈,现将解决办法粘出来跟大家分享一下:
struts配置改成了如下配置:
<!-- 导出excel -->
<action name="expExcel" class="measureAction" method="ExcelExport" >
<result name="excel" type="stream">
<param name="contentType">application/vnd.ms-excel</param>
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<param name="inputName">excelFile</param>
</result>
遇到的问题:
jsp页面原来一直弹不出保存框,排除了各种原因,最后发现了,在执行这个请求的时候,不能用ajax请求,即$.post(uri),这种就是出不来,同样的代码,jsp用form表单请求和<a href="">a标签请求都能出来,具体原因我也说不清楚,问题就出在这里了
#20
#1
#2
我记得以前遇到一个算是类似的问题吧,如果这个改成action的话,
直接往返回流中写execl数据并且还有返回值的话,会出现一个异常-流冲突,
如果把返回值修改为null,就能正常返回execl表了。
直接往返回流中写execl数据并且还有返回值的话,会出现一个异常-流冲突,
如果把返回值修改为null,就能正常返回execl表了。
#3
推荐pageoffice 很强大的一款插件,轻松实现office编辑打印导出
#4
有道理,学习了,那JSP要怎么处理
#5
我记得以前遇到一个算是类似的问题吧,如果这个改成action的话,
直接往返回流中写execl数据并且还有返回值的话,会出现一个异常-流冲突,
如果把返回值修改为null,就能正常返回execl表了。
不太明白,请问是把action中的返回值改为null嘛?如果action中的返回值改为null,struts2怎么知道要跳转到哪个页面呢?
#6
我记得以前遇到一个算是类似的问题吧,如果这个改成action的话,
直接往返回流中写execl数据并且还有返回值的话,会出现一个异常-流冲突,
如果把返回值修改为null,就能正常返回execl表了。
不太明白,请问是把action中的返回值改为null嘛?如果action中的返回值改为null,struts2怎么知道要跳转到哪个页面呢?
那么页面就不会跳转,而是直接返回一个execl报表。
如果想既跳转并且返回execl报表的话可以尝试两次请求。
我记得当初我错误的原因是生成一个out流,这个流与jsp自身的输出流冲突。
你先看看是不是这个原因,先找我说的试试,如果能返回execl表了再说。
#7
你是怎么确定成功跳转到这个页面的,你弹出框是怎么写的,有js错误吗?
#8
我你这是struts2的问题 不是poi的问题
#9
class="measureAction" 这个是不是要写包全名啊
#10
class="measureAction" 这个是不是要写包全名啊
是写数据那个方法走了,所以我肯定是跳转成功了,而且数据肯定也写进了excel,这我打断点跟过了,只不过执行完写数据就没反应了,没有弹出保存框。
#11
你是怎么确定成功跳转到这个页面的,你弹出框是怎么写的,有js错误吗?
后台没报错误,也没有js错误。
#12
我记得以前遇到一个算是类似的问题吧,如果这个改成action的话,
直接往返回流中写execl数据并且还有返回值的话,会出现一个异常-流冲突,
如果把返回值修改为null,就能正常返回execl表了。
不太明白,请问是把action中的返回值改为null嘛?如果action中的返回值改为null,struts2怎么知道要跳转到哪个页面呢?
那么页面就不会跳转,而是直接返回一个execl报表。
如果想既跳转并且返回execl报表的话可以尝试两次请求。
我记得当初我错误的原因是生成一个out流,这个流与jsp自身的输出流冲突。
你先看看是不是这个原因,先找我说的试试,如果能返回execl表了再说。
我的做法:
1:先经过一个action去数据库中查到了要导出的数据。把数据封装到session中
2:action执行成功后,通过struts2跳到一个jsp页面,在该页面获取session中的数据。设置头信息。
调用写入数据到excel文件的方法。
现在的结果是:写数据到excel的方法走了(我打断点跟了),但是前台页面没有弹出保存框,所以我也不知道这数据写哪里去了。
#13
POI生成excel弹出框是response出来的,那么你的struts不需要做任何的跳转
#14
数据写完,记得关闭输出流,不然页面不会有反应
#15
数据写完,记得关闭输出流,不然页面不会有反应
try {
out.flush();
wb.write(out);
out.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("Out is closed ");
}
已经关流了
#16
response.setHeader("Content-Disposition","attachment;filename=exportdata.xls"); response.setContentType("application/vnd.ms-excel");
这两句应该写到你的action的方法里
这两句应该写到你的action的方法里
#17
response.setHeader("Content-Disposition","attachment;filename=exportdata.xls"); response.setContentType("application/vnd.ms-excel");
这两句应该写到你的action的方法里
不是这个原因。
#18
我记得以前遇到一个算是类似的问题吧,如果这个改成action的话,
直接往返回流中写execl数据并且还有返回值的话,会出现一个异常-流冲突,
如果把返回值修改为null,就能正常返回execl表了。
不太明白,请问是把action中的返回值改为null嘛?如果action中的返回值改为null,struts2怎么知道要跳转到哪个页面呢?
那么页面就不会跳转,而是直接返回一个execl报表。
如果想既跳转并且返回execl报表的话可以尝试两次请求。
我记得当初我错误的原因是生成一个out流,这个流与jsp自身的输出流冲突。
你先看看是不是这个原因,先找我说的试试,如果能返回execl表了再说。
谢谢各位哈,现将解决办法粘出来跟大家分享一下:
struts配置改成了如下配置:
<!-- 导出excel -->
<action name="expExcel" class="measureAction" method="ExcelExport" >
<result name="excel" type="stream">
<param name="contentType">application/vnd.ms-excel</param>
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<param name="inputName">excelFile</param>
</result>
遇到的问题:
jsp页面原来一直弹不出保存框,排除了各种原因,最后发现了,在执行这个请求的时候,不能用ajax请求,即$.post(uri),这种就是出不来,同样的代码,jsp用form表单请求和<a href="">a标签请求都能出来,具体原因我也说不清楚,问题就出在这里了
#19
response.setHeader("Content-Disposition","attachment;filename=exportdata.xls"); response.setContentType("application/vnd.ms-excel");
这两句应该写到你的action的方法里
谢谢各位哈,现将解决办法粘出来跟大家分享一下:
struts配置改成了如下配置:
<!-- 导出excel -->
<action name="expExcel" class="measureAction" method="ExcelExport" >
<result name="excel" type="stream">
<param name="contentType">application/vnd.ms-excel</param>
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<param name="inputName">excelFile</param>
</result>
遇到的问题:
jsp页面原来一直弹不出保存框,排除了各种原因,最后发现了,在执行这个请求的时候,不能用ajax请求,即$.post(uri),这种就是出不来,同样的代码,jsp用form表单请求和<a href="">a标签请求都能出来,具体原因我也说不清楚,问题就出在这里了