不需要存盘直接下载EXCEL文件

之前写过把xls文件写在硬盘上,然后再写个下载的代码下载xls。

现在想点人链接直接下载到本地。之前用struts2自己的代码。后来发现生成的xls乱码

<action name="downloadFile" method="downloadFile" class="com.tvunetworks.report.web.ReportAction">
   <result name="success" type="stream">
    <param name="contentType">application/octet-stream</param>
    <param name="inputName">inputStream</param>
    <param name="contentDisposition">attachment;filename="${fileName}"</param>
    <param name="bufferSize">4096</param>
   </result>
  </action>

所以改成直接在response里设置,通过servlet里的response里下载。

public String downloadFile() throws Exception{
  HttpServletResponse response=ServletActionContext.getResponse();

//set response
  response.reset();
  response.setContentType("application/vnd.ms-excel; charset=utf-8");
  response.setHeader("Content-Disposition","attachment;Filename=reportData.xls");
  OutputStream out=response.getOutputStream(); 
//generate xls

  WritableWorkbook book=Workbook.createWorkbook(out);

//create sheet
  WritableSheet sheet=book.createSheet("device", 0);
// write row column

  sheet.addCell(new Label(col,row,head[i]));

// set col width
   sheet.setColumnView(i, 20);
    
  book.write();
  book.close();  
  out.flush();
  out.close();
  return null;  
 }

猜你喜欢

转载自blog.csdn.net/IamstudyingJava/article/details/41346021