Excel导出不同浏览器下文件名乱码问题
解决思路:通过请求头中的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导出不同浏览器下文件名乱码问题的更多相关文章
- Ubuntu Linux 下文件名乱码(无效的编码)的快速解决办法
文件是在WIndows 下创建的,Windows 的文件名中文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码不一致所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码.文件 ...
- Linux 下文件名乱码(无效的编码)的解决办法
文件是在WIndows 下创建的,Windows 的文件名中文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码 不一致所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码. ...
- jquery在ie浏览器下中文乱码的问题
用jquery的ajax方法在调用后台数据发现中文乱码,无法解析中文的url,而在别的浏览器下面就不会,如下所示 $.ajax({ type:'get', url:'薛之谦-演员.lrc', asyn ...
- 【转】Ubuntu Linux 下文件名乱码(无效的编码)的快速解决办法
原博文地址:http://www.cnblogs.com/york-hust/archive/2012/07/07/2580388.html 文件是在WIndows 下创建的,Windows 的文件名 ...
- Excel导出到浏览器(个人备份)
/// <summary> /// Excel导出 /// </summary> /// <param name="dt"></pa ...
- poi excel导出 xssf 带下拉框
需求:导出之后带有二级级联的下拉框.(类似于省市). 最初的思路是怀疑是不是数组内串太多了,导出之后的excel有36行,调试的误区在于刚开始认为对行数有限制,后自己写了一个测试类,才发现不是行数,而 ...
- struts2文件下载 火狐浏览器的文件名乱码问题
这是一个文件下载的action,红色部分为火狐浏览器需要特地做的事情. @Controller @Scope(value = "prototype") public class F ...
- 解决在某些IE浏览器下字符乱码的问题
习惯上我们写字符声明都是 <meta charset="utf-8"> 在绝大多数浏览器都没有问题,但是在操蛋的IE上有时候会出现编码错误!! 解决方案: <me ...
- 解决windows下文件拷贝到ubuntu下文件名乱码的问题
sudo apt-get install convmv 解压zip文件: convmv -f gbk -t utf8 -r --notest *
随机推荐
- Exception in thread "main" java.lang.IllegalArgumentException
1.错误描述 Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given ...
- QOpenGLTexture 两个纹理叠加
如何做纹理混合? 方法是,定义多个QOpenGLTexture,然后在fragment shader中添加相应的变量,然后把texture bind到对应的uniform变量上. 废话不多说 text ...
- monkey简介与最常用命令
1.monkey简介 monkey是SDK附带的一个用来做压力测试的工具,monkey测试所有事件都是随机发生的,不带有主观性,测试人员主要通过跑monkey后打印出来的日志分析来发现问题 2.mon ...
- 关于flex的布局理解
flex布局是一种新的布局方式也就是弹性盒子:在布局上更加方便,但是要注意的是在flex布局中float.position是无效的. 图片来自阮一峰的博客 .下面我们进入正题: flex布局分为分为主 ...
- mybatis快速入门(七)-spring-mybatis整合
今天写写spring-mybatis整合吧,先写个原始dao类的整合,下一节在写个动态代理的整合,我就不写太详细了,因为前面的章节基本上都有了,我直接就一口气都写出来需要那些文件然后在直接贴代码,首先 ...
- Bzoj2442:修剪草坪
Sol 一个很显然的暴力,设\(f[i]\)表示选到\(i\)的最优效率 每次枚举一段不与前面连续的长度小于\(k\)的区间转移来 # include <bits/stdc++.h> # ...
- 关于AJAX异步请求的那些事儿(2)
1.使用AJAX发起GET请求消息 xhr.open("GET","XX.PHP?K1=V1$K2=V2",true); xhr.send(null); 2.使 ...
- Scala编程快速入门系列(二)
目 录 一.Scala概述 二.Scala数据类型 三.Scala函数 四.Scala集合 五.Scala伴生对象 六.Scala trait 七.Actor 八.隐式转换与隐式参数 九.Sca ...
- 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. ...
- Cucumber 相关资源
Cucumber support: https://cucumber.io/support yan1234abcd的专栏:http://blog.csdn.net/yan1234abcd/articl ...