我已使用Apache POI创建了excel文件,并尝试将其作为对ajax调用的响应返回。我希望浏览器提示"保存创建的文件"窗口。 问题是我在servlet的响应中得到了瑕疵,没有提示或任何提示
我在StackOverflow上发现了类似的问题,但他们问题的解决方案并不适用于我(或者我错过了一些东西)。
Here问题通过使用html标签解决了,但我不能(据我所知)在SAPUI5中使用它们。
而here是一个非常类似的案例,我用这个案子,但它仍然无效。
以下是客户端代码:
jQuery.ajax({
url : "Export",
type : "post",
mimeType: 'application/vnd.ms-excel',
success : function(){
console.log("data was exported successfully");
},
error: function(){
console.log("error while exporting data");
},
complete: function(){
console.log("exporting data has been completed");
}
});
这是servlet的代码:
response.setContentType("application/vnd.ms-excel");
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
response.setHeader("Content-Disposition", "attachment; filename=ReportsData.xls");
ServletOutputStream out = response.getOutputStream();
workbook.write(out);
out.flush();
out.close();
该文件是从数据库创建的,然后选择'在while(result.next())
循环中设置了wuery结果。
谢谢!
答案 0 :(得分:4)
而不是使用ajax尝试在javascript中进行这样的调用。
window.open(("urltoyourservlet"), "_blank");
这将打开一个直接链接到您的servlet的新窗口。然后浏览器应该自动处理基于mime / type下载excel文件的句柄。