0

我正在尝试从弹出窗口(jquery UI 对话框)导出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下载不起作用?

4

1 回答 1

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. 从您应该返回的操作中,NONE而不是null(这导致您的错误)。


也就是说,你真的不需要使用像 Servlet 这样的动作(就像我在这里使用的那样):

只需使用Stream 结果,在 中设置ContentType和,然后将 InputStream 返回到页面,如本示例中所述ContentDispositionStruts.xml

于 2013-07-12T09:18:59.237 回答