您的位置:首页 > 其它

项目总结1——excel导出相关问题

2016-09-08 12:28 363 查看
1、excel导出文件时,文件名中中文部分空白不显示的问题,原本写法是:

String fileName = "物联网PBOSS主机巡检日报-" + inspectTime + ".xls";
response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("GBK"), "utf-8"));
response.setCharacterEncoding("UTF-8");


修改后的写法是:

String fileName = "物联网PBOSS主机巡检日报-" + inspectTime + ".xls";
response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("GBK"), "ISO8859_1"));
response.setCharacterEncoding("UTF-8");


并没有太明白为什么这样写就可以了,因为我整个项目的字符集编码是utf-8,而filName.getbytes后却要写gbk。网上搜了一下,也还没有找到满意的说法。

2、excel导出时单元格样式的问题,因为我导出时使用了excel模板,已经提前把单元格线条都设置好了,所以原本的样式代码如下,并没有设置单元格线条:

HSSFCellStyle style1 = wb.createCellStyle();
// 平行居中
style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 垂直居中
style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);


但是结果导出以后就出现了许多格子没有实体线条,很不美观。



最终解决办法是为每个单元格的四面边框都设置边框线,修改后的样式代码如下:

HSSFCellStyle style1 = wb.createCellStyle();
// 平行居中
style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 垂直居中
style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
//设置边框线
style1.setBorderBottom((short) 1);
style1.setBorderLeft((short) 1);
style1.setBorderRight((short) 1);
style1.setBorderTop((short) 1);


修改后再次导出后样式就没管多了:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: