Excel导出问题 - 来自Jquery对话框

时间:2013-07-12 00:09:34

标签: jquery java-ee struts2 datatables struts2-jquery

我正在尝试从弹出窗口(jquery UI Dialog)中导出excel。我有java类方法,响应类型内容 - 处置附件标题。但是它没有下载excel表。

jQuery("#dialog-form").dialog ({ 
 autoOpen: false,
  height: 600,
  width: 700,
  modal: true,
  resizable: false,
  draggable: false, 
  buttons : {
"Export" : function() {
  jQuery.ajax({
     url : '<s:url action="list" method="export"/>',
     });
  } });

Java类:

public String export(){

--some backend calls.

httpServletResponse.setHeader("Content-disposition",
      "attachment; filename="+filename+".xls");
      ServletOutputStream outputStream = httpServletResponse.getOutputStream();
      outputStream.flush();
      return null;
    }

控制台:

No result returned for action at null

请告知为什么这个excel下载不起作用?

1 个答案:

答案 0 :(得分:1)

有一些错误:

  1. 文件名应该用双引号括起来,如果您想在浏览器中打开而不是下载它,则应使用inline代替attachment

    httpServletResponse.setHeader("Content-disposition", 
                                  "inline; filename=\""+filename+"\".xls");
    
  2. 您应始终指定contentType

    httpServletResponse.setContentType(
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    

    (或application/vnd.ms-excel旧版Excel文件);

  3. 来自操作的
  4. 您应该返回NONE而不是null(这会导致您的错误)。


  5. 那就是说,你真的不需要像Servlet那样使用Action(like instead I had here):

    只需使用Stream result ,在ContentType中设置ContentDispositionStruts.xml,然后将InputStream返回到页面,{ {3}}