action的method少了指定下<action name="exportExcel" class="exportExcel" method="exportExcel"

解决方案 »

  1.   

    先要排除Excel有没有生成,或者你配置里面出现了重复转向,
    页面弹出下载代码贴出来看看
      

  2.   

    我在请求的时候用的是exportExcel!exportExecl.action
      

  3.   

    excel直接写到硬盘没问题,向前台传的时候不行,struts2配置下载在前台不用写弹出代码,配置了<param name="contentDisposition">attachment;filename="${filename}"</param><!-- 下载文件名 --> 就好了
      

  4.   

    this.filename = new Date().toString() + ".xls";
    难道文件名的问题?猜测
      

  5.   

    HttpServletResponse response = ServletActionContext.getResponse();
    response.setContentType("application/x-msdownload");
    response.setHeader("Content-disposition", "attachment;filename="
    + new String(paramfile.getName().getBytes("gb2312"),
    "iso8859-1"));
    os = response.getOutputStream();
    book = Workbook.createWorkbook(os);return null;最后配置文件
    <action name="XXX"
    class="XXXXX" method="XXX">
    </action>
      

  6.   

    <param name="contentType">application/application/vnd.ms-excel</param>
    这个改成excel的mimeType再把filename用个简单点的a.xls先试下能下载不
      

  7.   


    response.setContentType("application/vnd.ms-excel;charset=utf-8");
    response.setHeader("Content-Disposition", "attachment;filename="
    + new String(fileName.getBytes("gbk"), "ISO8859-1") +
    new String("导出".getBytes("gbk"), "ISO8859-1")
    + ".xls");
    OutputStream out = response.getOutputStream();
    WritableWorkbook workbook = Workbook.createWorkbook(out);
    ……………………
    workbook.write();
    out.flush();上面是Struts1的写法
      

  8.   

    就一个按钮,请求这个action所有查询sql都是在action拼接出来的
      

  9.   

    book.write();             
    book.close();             
    this.filename = new Date().toString() + ".xls";                           this.inputStream = new ByteArrayInputStream(os.toByteArray()); 这段代码看上去不太像是将excel发送到前台的,os和book是怎么关联的,os又是怎么发送到前台的
    可以先把业务逻辑放在servlet里测一下
      

  10.   

    我和楼主遇到一样的问题了,我解决办法是由原来的post异步访问后台的导出方法修改为get方式就没问题了
      

  11.   

     public String getFileName() throws UnsupportedEncodingException {
    fileName = new String(fileName.getBytes(), "ISO-8859-1");
    return fileName;
    }