当前位置:首页 > 开发 > 编程语言 > 编码 > 正文

解决ie和其他浏览器poi下载excel文件名乱码

发表于: 2014-05-13   作者:jackyrong   来源:转载   浏览:
摘要:    使用poi,做传统的excel导出,然后想在浏览器中,让用户选择另存为,保存用户下载的xls文件,这个时候,可能的是在ie下出现乱码(ie,9,10,11),但在firefox,chrome下没乱码, 因此必须综合判断,编写一个工具类:      /** * * @Title: pro
   使用poi,做传统的excel导出,然后想在浏览器中,让用户选择另存为,保存用户下载的xls文件,这个时候,可能的是在ie下出现乱码(ie,9,10,11),但在firefox,chrome下没乱码,

因此必须综合判断,编写一个工具类:


    
/**
     * 
     * @Title: processFileName
     * 
     * @Description: ie,chrom,firfox下处理文件名显示乱码
     */
    public static String processFileName(HttpServletRequest request, String fileNames) {
        String codedfilename = null;
        try {
            String agent = request.getHeader("USER-AGENT");
            if (null != agent && -1 != agent.indexOf("MSIE") || null != agent
                    && -1 != agent.indexOf("Trident")) {// ie

                String name = java.net.URLEncoder.encode(fileNames, "UTF8");

                codedfilename = name;
            } else if (null != agent && -1 != agent.indexOf("Mozilla")) {// 火狐,chrome等


                codedfilename = new String(fileNames.getBytes("UTF-8"), "iso-8859-1");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return codedfilename;
    }



   然后,

            response.setHeader("Cache-Control", "private");
            response.setHeader("Pragma", "private");
            response.setContentType("application/vnd.ms-excel;charset=utf-8");
            response.setHeader("Content-Type", "application/force-download");
       
            title = FileUtil.processFileName(request, title);
            response.setHeader("Content-disposition", "attachment;filename=" + title + ".xls");



  就可以解决了,注意判断是否ie的时候,ie 11的agent是Trident

解决ie和其他浏览器poi下载excel文件名乱码

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
下载在FF浏览器下出现了下列问题 但是在其他浏览器(IE,Chrome....)上没有出现这个问题, 需要写
关键代码: package com.action; import java.io.FileInputStream; import java.io.FileNotFoundExce
环境:Windows 7 英文旗舰版 + Chrome 22.0 问题:使用Chrome下载文件,文件名出现乱码 解决:我使
使用jdk自带的zip工具类java.util.zip.ZipEntry,java.util.zip.ZipFile,java.util.zip.ZipInputSt
使用jdk自带的zip工具类java.util.zip.ZipEntry,java.util.zip.ZipFile,java.util.zip.ZipInputSt
使用jdk自带的zip工具类java.util.zip.ZipEntry,java.util.zip.ZipFile,java.util.zip.ZipInputSt
使用jdk自带的zip工具类java.util.zip.ZipEntry,java.util.zip.ZipFile,java.util.zip.ZipInputSt
在Ubuntu 12.10上测试完全可行: http://forum.ubuntu.org.cn/viewtopic.php?f=8&t=392951 用到的工
JAVA报表 POI未捕获到 servlet OUTEXCEL 的其中一个服务方法中抛出的异常。抛出的异常:java.lang.N
通过把Content-Type设置为application/octet-stream,可以把动态生成的内容当作文件来下载,相信这
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号