一、通过后端处理导出
1.) 后端响应头设置
前端若想下载一个根据查询参数生成的excel报表文件,需要后端设置请求内容的类型,具体设置如下:
response.reset(); response.setContentType("application/vnd.ms-excel;charset=utf-8"); // 表明是excel类型 //response.setContentType("application/octet-stream"); // 或设成通用二进制流类型 response.setHeader("Content-Disposition", "attachment;filename=test.xls")); // 将请求的内容存为一个名为test的文件
2.) 前端相应的代码
正常情况下,用以下两种方法均可:
window.open('/url/download?param=xxx')window.location = '/url/download?param=xxx' // 不加href,是因为有些浏览器有兼容问题
但如果window.open是在一个ajax回调里执行,浏览器会被安全拦截,解决方案:
$.ajax({ .... success: function() { var win = window.open() win.location = '/url/download?param=xxx' }})
或直接用window.location
$.ajax({ .... success: function() { window.location = '/url/download?param=xxx' }})
二、前端直接将json数据处理成excel文件
具体完整代码如下: