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);
修改后再次导出后样式就没管多了: