2014年3月13日 星期四

JSP導出Excel奇怪的亂碼問題

出處: JSP導出Excel奇怪的亂碼問題

遇到跟連結中作者一樣的問題,JSP導出EXCEL一般情況都好好的,但就是資料少的時候會出現亂碼。

文中提到

<%  
    //就是靠這一行,讓前端瀏覽器以為接收到一個excel檔   
    response.setHeader("Content-disposition" ,"attachment; filename=Excle.xls");     
%> 

就是解決關鍵,我自己的檔案中原本是inline,改成attachment之後就沒問題囉!!

感謝作者。

[後續]
不知道為什麼,後來又跑一次CODE又失敗了,只好繼續找答案,這次找到這個:

要在寫入EXCEL的時候先寫這段: 
//PrintWriter op = response.getWriter();
op.write("<meta http-equiv=Content-Type content=text/html;charset=utf-8>");

整段如下:
<%  
//將產生的排行表導入EXCEL檔,以供下載
    try{
   response.reset();        
   String fileName =  request.getParameter("fileName");  
   response.setHeader("Content-disposition","attachment; filename=Ranking_" + fileName); 
   response.setHeader("Pragma", "no-cache");
   response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
   response.setHeader("Cache-Control", "pre-check=0, post-check=0, max-age=0");
   response.setHeader("Content-Transfer-Encoding", "binary");
   response.setHeader("Content-Encoding", "UTF-8");
   response.setHeader("Expires", "0");
   response.addHeader("Accept-Language", "zh-tw");
   response.setContentType("application/ms-excel");
   
   PrintWriter op = response.getWriter();  
   String CSV = request.getParameter("tableHTML");  
   if (CSV == null)  
   {  
       CSV="NO DATA";  
   }  
   if (fileName == null)  
{  
   CSV="NO FILE NAME SPECIFIED";  
}  
   op.write("<meta http-equiv=Content-Type content=text/html;charset=utf-8>");
op.write(CSV);  
    }catch (Exception ex){
    ex.printStackTrace();
    }
%>  

沒有留言:

張貼留言