从Servlet下载Excel

时间:2014-01-16 08:13:53

标签: java excel servlets download content-type

我有以下servlet,我使用“GET”方法下载我使用apache POI生成的Excel文件。

response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=reg_user.xls");

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Registered Users");

// create workbook

ServletOutputStream out = response.getOutputStream();
workbook.write(out); 
out.flush();
out.close();

我对这个servlet进行了ajax调用。但是Excel文件没有下载。当我查看控制台时,它有一些奇怪的字符以及来自所谓的excel文件的可能数据

+ ) , * ` 注册用户 # 用户ID Name 电子邮件地址 移动号码 出生日期 Gender Locale 100005085485545

我使用相同的方法使用以下代码将文件写入我的计算机并且它有效。

FileOutputStream out = new FileOutputStream(new File("C:\\new.xls"));
workbook.write(out);
out.close();

但我想要的是自动下载文件,由于某种原因这不起作用。

课程可能是什么?我已经正确设置了响应内容类型。

2 个答案:

答案 0 :(得分:1)

当ajax调用完成后,浏览器不显示下载弹出窗口,您应该使用从ajax调用接收的头信息和字节再次创建文件

答案 1 :(得分:0)

好吧,实际上问题是我正在进行ajax调用。当我使用<a href="reporting.do?type=USERS">User Report</a>直接调用servlet时,它运行正常。