出處: 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();
}
%>
沒有留言:
張貼留言