Java web中不同瀏覽器間導出Excel文件名稱亂碼問題解決方案


問題描述:

        對於不同瀏覽器存在對中文編碼格式問題,從而在導出Excel文件時,中文文件名出現亂碼的情況,即在程序中給要導出的文件指定一個中文名字時,在瀏覽器上出現的下載框中的文件名出現了亂碼,解決如下:   

解決方案:

  1.      Date dt=new Date();//如果不需要格式,可直接用dt,dt就是當前系統時間  
  2.     DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//設置顯示格式  
  3.     String nowTime="";  
  4.     nowTime= df.format(dt);//用DateFormat的format()方法在dt中獲取並以yyyy/MM/dd HH:mm:ss格式顯示  
  5.       
  6.     WritableWorkbook book = null;  
  7.      String fileName = null;  
  8.      fileName = "中文文件名"+nowTime+ ".xls";  
  9.      OutputStream os = null;           
  10.      final String userAgent = request.getHeader("USER-AGENT");  
  11.      try {  
  12.         os = response.getOutputStream();  
  13. esponse.reset();//清空輸出流  
  14.   
  15.              String finalFileName = null;  
  16.              if(StringUtils.contains(userAgent, "MSIE")){//IE瀏覽器  
  17.              finalFileName = URLEncoder.encode(fileName,"UTF8");  
  18.          }else if(StringUtils.contains(userAgent, "Mozilla")){//google,火狐瀏覽器  
  19.              finalFileName = new String(fileName.getBytes(), "ISO8859-1");  
  20.          }else{  
  21.              finalFileName = URLEncoder.encode(fileName,"UTF8");//其他瀏覽器  
  22.          }  
  23.          response.setHeader("Content-Disposition", "attachment; filename=\"" + finalFileName + "\"");//這里設置一下讓瀏覽器彈出下載提示框,而不是直接在瀏覽器中打開  
  24.          response.setContentType("application/vnd.ms-excel");  
  25.      } catch (UnsupportedEncodingException e) {  
  26.         e.printStackTrace();  
  27.      }catch (IOException e) {  
  28.        e.printStackTrace();  
  29. }  
  30.        
  31.         book = Workbook.createWorkbook(os);  
  32.              WritableSheet sheet = book.createSheet("Sheet_1", 0);.................................


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM