剛開始使用ajax作Excel導出,發現ajax作不了瀏覽器導出只能下載到本地,因而用form提交能夠提供瀏覽器下載Excel。html
1>用ajax作本地下載:jquery
FileOutputStream fout = new FileOutputStream("C:/student.xls");
.write(fout);
fout.close();ajax
2>用form作瀏覽器下載:json
jsp:HTML:瀏覽器
<form id="myform" name="myform" method="post" action="" style="float:right;">
<input type="hidden" name="year" >
<input type="button" id="jqueryBtn" onclick="exportData()" value="導出數據" /></form>app
js:異步
document.getElementById("myform").setAttribute("action", url);//url提交的路徑
document.getElementById("myform").year.value = str;//提交的參數值
document.getElementById("myform").submit();jsp
Java:post
String name = new String((fileName.getBytes("GBK")), "ISO8859_1");
OutputStream os = response.getOutputStream();
response.reset();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment; filename=" + name);
wb.write(os);
os.flush();
os.close();url
ajax不能導出的緣由:ajax請求只是個「字符型」的請求,即請求的內容是以文本類型存放的。文件的下載是以二進制形式進行的,ajax無法解析後臺返回的文件流,因此沒法處理二進制流response輸出來下載文件;經過ajax異步傳輸的數據格式有三種,分別是html、xml以及json格式,不能傳遞流的格式。