之前写过把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;
}