1. 程式人生 > >form表單提交方式實現瀏覽器導出Excel

form表單提交方式實現瀏覽器導出Excel

The 下載到本地 ajax請求 形式 html iso ont ear 發現

剛開始使用ajax做Excel導出,發現ajax做不了瀏覽器導出只能下載到本地,於是用form提交可以提供瀏覽器下載Excel。

1>用ajax做本地下載:

  FileOutputStream fout = new FileOutputStream("C:/student.xls");
  .write(fout);
   fout.close();

2>用form做瀏覽器下載:

  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>

    js:

    document.getElementById("myform").setAttribute("action", url);//url提交的路徑
    document.getElementById("myform").year.value = str;//提交的參數值
    document.getElementById("myform").submit();

  Java:

    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();

ajax不能導出的原因:ajax請求只是個“字符型”的請求,即請求的內容是以文本類型存放的。文件的下載是以二進制形式進行的,ajax沒法解析後臺返回的文件流,所以無法處理二進制流response輸出來下載文件;通過ajax異步傳輸的數據格式有三種,分別是html、xml以及json格式,不能傳遞流的格式。

form表單提交方式實現瀏覽器導出Excel