java 實現 Excel下載
阿新 • • 發佈:2019-02-05
@RequestMapping(value = "value") public void downloadEQCSModel(HttpServletRequest request,HttpServletResponse response,HttpSession session) throws IOException { String file_name = "機臺接觸腳位模板.xlsx"; //要下載的檔名 if(file_name == null){ file_name=""; } String url = session.getServletContext().getRealPath("/") + "excelFile\\機臺接觸腳位模板.xlsx"; System.out.println("filedownload =" + url); response.setContentType("application/octet-stream"); if (request.getHeader("user-agent").toLowerCase().indexOf("firefox") > -1) { //火狐瀏覽器自己會對URL進行一次URL轉碼所以區別處理 response.setHeader("Content-Disposition", "attachment;filename=" + new String(file_name.getBytes("utf-8"), "ISO-8859-1")); } else { response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(file_name,"utf-8")); } //新建檔案輸入輸出流 OutputStream output = null; FileInputStream fis = null; try{ File f = new File(url);//新建File物件 output = response.getOutputStream();//新建檔案輸入輸出流物件 fis = new FileInputStream(f); byte[] b = new byte[(int)f.length()]; //設定每次寫入快取大小 //把輸出流寫入客戶端 int i = 0; while((i = fis.read(b)) > 0){ output.write(b, 0, i); } output.flush(); } catch(Exception e){ e.printStackTrace(); } finally { if(fis != null) { fis.close(); fis = null; } if(output != null) { output.close(); output = null; } } }