因为使用ajax导出excel会出现问题,所以现在使用jquery.fileDownload.js插件来解决导出excel的问题
http://johnculviner.com/jquery-file-download-plugin-for-ajax-like-feature-rich-file-downloads/
在页面引入jquery.fileDownload.js插件
1、如下图
<script type="text/javascript" src="${resource}/js/jquery.fileDownload.js"/></script>
<script type="text/javascript">
$("#exportBtn").on("click",function(){
$("#exportExcelModal").modal();
});
$("#export_confirm").on("click",function(){
var url="${path}/admin/information/student/export";
$.fileDownload(url,{
data:{semesterId:$("#misSemester").val()},
successCallback: function (url) {
$("#exportExcelModal").modal("hide");
},
failCallback: function (html, url) {
alert("导出失败,未知的异常。");
$("#exportExcelModal").modal("hide");
}
});
});
2、如果要使回调函数successCallback和failCallback起作用,还得在后台代码中返回Cookie,如下图
3、在后台代码中设置Cookie,并返回Cookie的值
public void export(final HttpServletRequest request, HttpServletResponse response,final String semesterId) throws IOException, IllegalArgumentException, IllegalAccessException {
String fileName = "excel文件";
response.reset();
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + new String((fileName + ".xls").getBytes(), "iso-8859-1"));
//在这里加入设置Cookie -------------
Cookie fileDownload=new Cookie("fileDownload", "true");
fileDownload.setPath("/");
response.addCookie(fileDownload);
//------------------------------------
ServletOutputStream out = response.getOutputStream();
final HSSFWorkbook workbook = new HSSFWorkbook();
List<Future<Boolean>> resultList = new ArrayList<Future<Boolean>>();