1. 程式人生 > >運用JQuery的AJAX實現excel檔案下載

運用JQuery的AJAX實現excel檔案下載

剛剛畢業,現在在公司做一個關於閘道器api的專案。做關於excel檔案的匯入和匯出功能的實現,運用spring框架和jquery實現了檔案的下載功能。

 前端程式碼:<button  class="btn btn-success" v-click="download()">下載模板</button>

js檔案程式碼:

 //JQuery的AJAX實現檔案下載
     $scope.download = function() {
    console.log('enter download ');
    var form_=$("<form action='../console/rule/download.do' method='get'></form>"); //定義一個form表單
    $('body').append(form_); //將表單放置在web中
    form_.submit(); //表單提交 
    $scope.$alert({
             title: "操作提示",
             content: "下載模板檔案成功!",
             ok: function () {
//             $scope.goto("#0");//相當於返回第一頁並重新整理
             console.log('okok....');
             }
    });
     }

控制器程式碼:

 @RequestMapping(value="/download",method= RequestMethod.GET)
    public String download(HttpServletResponse response){
   
    FileInputStream fis = null;
try {
fis = new FileInputStream(
     new File("src/main/resources/WriteSheet.xlsx"));
response.setContentType("application/vnd.ms-excel");
        //response.setContentType("multipart/form-data");//設定檔案型別
        response.setHeader("Content-Disposition", "attachment;filename=Template.xlsx");//設定顯示檔名
        //輸出流
        OutputStream os = response.getOutputStream();
       //快取位元組陣列
        byte[] b = new byte[2048];
        int length;
       //把輸入流中的檔案分段讀入快取位元組陣列,再把位元組陣列中的資料寫到輸出流。
        while ((length = fis.read(b)) > 0) {
           os.write(b, 0, length);
        }
        os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//關閉流關閉。
        try {
        if(fis != null) {
        fis.close();
        }
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}     
}         
    return null;
    }