jsp调用java方法导出excel为什么没弹出保存或下载的对话框 (代码如下)请高手指点

publicStringCreateSimpleExcel()throwsException{//HttpServletResponseresponse=this.res... public String CreateSimpleExcel() throws Exception{
//HttpServletResponse response = this.response;
List<Report_da1> list = report_da1ServiceImpl.CreateSimpleExcel(report_da1);
List<C1param> tpl = paramService.getParamListByCode(SystemConstant.Transaction_Type);
List<C1param> sl = paramService.getParamListByCode(SystemConstant.Trade_Ledger_Status);
boolean flag = false;
try {
OutputStream os = response.getOutputStream();// 取得输出流
response.setContentType("application/msexcel;charset=UTF-8");//定义输出类型
response.reset();//清除缓冲中的数据
response.setHeader("Content-disposition", "attachment; filename=fine.xls");//设定输出文件头
response.flushBuffer();//将缓冲区中的所有数据发送到客户端
//File outFile = new File("D:" + File.separator + "代理商日交易情况统计表.xls");
//OutputStream os = new FileOutputStream(outFile);
// 创建Excel工作薄
WritableWorkbook wwb = Workbook.createWorkbook(os);
String[] title = {"编码","统计日期","代理商编码","代理商名称","交易类型","交易状态","累计金额","累计笔数"};
String exportName = "代理商日交易情况统计";
WritableSheet sheet = wwb.createSheet(exportName, 0);
Label label;
for(int i=0;i<title.length;i++){ // Label(x,y,z) 代表单元格的第x+1列,第y+1行, 内容z // 在Label对象的子对象中指明单元格的位置和内容
label = new Label(i,0,title[i]); // 将定义好的单元格添加到工作表中
sheet.addCell(label);
}
sheet.setColumnView(2,17);
sheet.setColumnView(3,10);
if(list !=null){
for (int i = 0; i < list.size(); i++) {
Report_da1 r = list.get(i);
String status = "";
String tradeType="";
if(tpl!=null){
for(int j=0;j<tpl.size();j++){
C1param p = tpl.get(j);
if(r.getTrade_type().equals(p.getValue())){
tradeType = p.getName();
break;
}
}
}
if(sl!=null){
for(int j=0;j<sl.size();j++){
C1param a = sl.get(j);
if(r.getTrade_status().equals(a.getValue())){
status = a.getName();
break;
}
}
}
label = new Label(0, i+1, ""+r.getId());//添加运营商
sheet.addCell(label);
label = new Label(1, i+1,""+r.getRdate());
sheet.addCell(label);
label = new Label(2, i+1, r.getAgency_code());
sheet.addCell(label);
label = new Label(3, i+1, r.getAgency_name());
sheet.addCell(label);
label = new Label(4, i+1, tradeType);
sheet.addCell(label);
label = new Label(5, i+1, status);
sheet.addCell(label);
label = new Label(6, i+1, ""+r.getTotal_amount());
sheet.addCell(label);
label = new Label(7, i+1, ""+r.getTotal_count());
sheet.addCell(label);
}
}
wwb.write() ;
wwb.close() ;
os.close();
flag = true;
} catch (Exception e) {
flag= false;
}
PrintWriter out = response.getWriter();
System.out.println("-------------------flag="+flag);
if(true == flag){
out.write("succ");
}else{
out.write("error");
}
return null;
}
展开
 我来答
shoushou2001
2013-03-27 · TA获得超过273个赞
知道答主
回答量:221
采纳率:100%
帮助的人:128万
展开全部
JSP页面有没有加了设置了,如
html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<table>
......
</table>
</body>
</html>
你试试,我没环境不好测试,希望有用。
追问
我试了一下 可并没有用 还有什么原因么?
追答
给你找了一个链接,供参考:
http://blog.csdn.net/cmtobby/article/details/1508647
不非别S
2013-03-27 · TA获得超过699个赞
知道小有建树答主
回答量:236
采纳率:0%
帮助的人:121万
展开全部
没异常吗?
不弹出的可能基本上就是出异常了啊..
wwb.write() 不太记得了..
我还用过这种办法去导出.
response.getOutputStream().write(file.getBytes());

但是按理来说...wwb.write() 应该是没问题的
所以我觉得可能是导出过程出异常了..
更多追问追答
追问
后台并没有报错 没有异常 会是什么原因呢?
追答
你的flag 变量 值是多少? 看日志 ..
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式