解决思路:通过请求头中的User-Agent参数中的信息来区分不同浏览器

     public Object exportPz(HttpServletRequest request, HttpServletResponse response, Url url, UserDetails user,
Map<String, Object> urlParams, Map<String, String> reqParams) throws ParseException {
String json = "";
List<CAccvouchAndDetail> padlist = selectVoucherCommon(request, urlParams);
try {
HttpSession session = request.getSession();
CUserZt userztModel = redisCache.getObject(RedisKey.ZT_MODEL_LIST+":"+session.getAttribute(Constant.ZT_ID),CUserZt.class); // 获取工作簿
HSSFWorkbook workbook = getWorkbook(userztModel.getZtname(), request);
CellStyle style = workbook.createCellStyle();
CellStyle styleL = workbook.createCellStyle();
CellStyle styleR = workbook.createCellStyle(); Font cellFont = workbook.createFont();
cellFont.setFontHeightInPoints((short) 10);
cellFont.setFontName("宋体");
style.setFont(cellFont);
style.setBorderBottom((short) 1);
style.setBorderLeft((short) 1);
style.setBorderRight((short) 1);
style.setBorderTop((short) 1);
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平
// 获取工作簿的sheet表
HSSFSheet sheet = workbook.getSheetAt(0); styleL.cloneStyleFrom(style);
styleR.cloneStyleFrom(style);
styleL.setAlignment(HSSFCellStyle.ALIGN_LEFT);
styleR.setAlignment(HSSFCellStyle.ALIGN_RIGHT); // 设置excel中的值
setValue(sheet, padlist, style, styleL, styleR); String strFileName = com.wukongxiaozi.framework.utils.DateUtil.formatDate(new Date(), "yyyyMMddhhmmss")
+ "_凭证信息" + ".xls";
/**
* 本次添加主要修复不同浏览器下导出凭证文件名乱码的问题;author ltao
*/ final String userAgent = request.getHeader("USER-AGENT");
String finalFileName = null; if (StringUtils.contains(userAgent, "Edge")) {
finalFileName = URLEncoder.encode(strFileName, "UTF8");
} else if (StringUtils.contains(userAgent, "MSIE")) {// IE浏览器
finalFileName = URLEncoder.encode(strFileName, "UTF8");
} else if (StringUtils.contains(userAgent, "Mozilla")) {// google,火狐浏览器
finalFileName = new String(strFileName.getBytes(), "ISO8859-1");
} else {
finalFileName = URLEncoder.encode(strFileName, "UTF8");// 其他浏览器
} response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition",
"attachment;fileName=" + finalFileName);
ServletOutputStream out = response.getOutputStream();
workbook.write(out);
out.flush();
out.close();
} catch (Exception e) {
LOG.e(e.toString());
}
return json;
}

参考文档:http://blog.csdn.net/tongxinxiao/article/details/43733881

Excel导出不同浏览器下文件名乱码问题的更多相关文章

  1. Ubuntu Linux 下文件名乱码(无效的编码)的快速解决办法

    文件是在WIndows 下创建的,Windows 的文件名中文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码不一致所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码.文件 ...

  2. Linux 下文件名乱码(无效的编码)的解决办法

    文件是在WIndows 下创建的,Windows 的文件名中文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码 不一致所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码. ...

  3. jquery在ie浏览器下中文乱码的问题

    用jquery的ajax方法在调用后台数据发现中文乱码,无法解析中文的url,而在别的浏览器下面就不会,如下所示 $.ajax({ type:'get', url:'薛之谦-演员.lrc', asyn ...

  4. 【转】Ubuntu Linux 下文件名乱码(无效的编码)的快速解决办法

    原博文地址:http://www.cnblogs.com/york-hust/archive/2012/07/07/2580388.html 文件是在WIndows 下创建的,Windows 的文件名 ...

  5. Excel导出到浏览器(个人备份)

    /// <summary>  /// Excel导出  /// </summary>  /// <param name="dt"></pa ...

  6. poi excel导出 xssf 带下拉框

    需求:导出之后带有二级级联的下拉框.(类似于省市). 最初的思路是怀疑是不是数组内串太多了,导出之后的excel有36行,调试的误区在于刚开始认为对行数有限制,后自己写了一个测试类,才发现不是行数,而 ...

  7. struts2文件下载 火狐浏览器的文件名乱码问题

    这是一个文件下载的action,红色部分为火狐浏览器需要特地做的事情. @Controller @Scope(value = "prototype") public class F ...

  8. 解决在某些IE浏览器下字符乱码的问题

    习惯上我们写字符声明都是 <meta charset="utf-8"> 在绝大多数浏览器都没有问题,但是在操蛋的IE上有时候会出现编码错误!! 解决方案: <me ...

  9. 解决windows下文件拷贝到ubuntu下文件名乱码的问题

    sudo apt-get install convmv     解压zip文件:    convmv -f gbk -t utf8 -r --notest *

随机推荐

  1. Exception in thread "main" java.lang.IllegalArgumentException

    1.错误描述 Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given ...

  2. QOpenGLTexture 两个纹理叠加

    如何做纹理混合? 方法是,定义多个QOpenGLTexture,然后在fragment shader中添加相应的变量,然后把texture bind到对应的uniform变量上. 废话不多说 text ...

  3. monkey简介与最常用命令

    1.monkey简介 monkey是SDK附带的一个用来做压力测试的工具,monkey测试所有事件都是随机发生的,不带有主观性,测试人员主要通过跑monkey后打印出来的日志分析来发现问题 2.mon ...

  4. 关于flex的布局理解

    flex布局是一种新的布局方式也就是弹性盒子:在布局上更加方便,但是要注意的是在flex布局中float.position是无效的. 图片来自阮一峰的博客 .下面我们进入正题: flex布局分为分为主 ...

  5. mybatis快速入门(七)-spring-mybatis整合

    今天写写spring-mybatis整合吧,先写个原始dao类的整合,下一节在写个动态代理的整合,我就不写太详细了,因为前面的章节基本上都有了,我直接就一口气都写出来需要那些文件然后在直接贴代码,首先 ...

  6. Bzoj2442:修剪草坪

    Sol 一个很显然的暴力,设\(f[i]\)表示选到\(i\)的最优效率 每次枚举一段不与前面连续的长度小于\(k\)的区间转移来 # include <bits/stdc++.h> # ...

  7. 关于AJAX异步请求的那些事儿(2)

    1.使用AJAX发起GET请求消息 xhr.open("GET","XX.PHP?K1=V1$K2=V2",true); xhr.send(null); 2.使 ...

  8. Scala编程快速入门系列(二)

    目    录 一.Scala概述 二.Scala数据类型 三.Scala函数 四.Scala集合 五.Scala伴生对象 六.Scala trait 七.Actor 八.隐式转换与隐式参数 九.Sca ...

  9. Linux-Centos7----安装Python的psutil模块插件

    # wget https://pypi.python.org/packages/source/p/psutil/psutil-2.1.3.tar.gz # tar zxvf psutil-2.1.3. ...

  10. Cucumber 相关资源

    Cucumber support: https://cucumber.io/support yan1234abcd的专栏:http://blog.csdn.net/yan1234abcd/articl ...