1. 程式人生 > >java 實現 Excel下載

java 實現 Excel下載

@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;
            }
        }
    }