在使用Java 导出Excel 等报表时,对于中文文件名,会出现不显示中文或者中午乱码的问题。此问题的解决方案比较简单,将要返回的中文文件名做iso-8859-1 转码即可。
【问题写法】
【正确方式: 推荐方式】
推荐在导出文件时,指定返回内容编码,并对文件名进行转码
response.setContentType("application/octet-stream;charset=utf-8"); response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(),"iso-8859-1") + ".xls");
【PS: Spring 导出Excel 技巧】
Spring 中提供了 AbstractExcelView(org.springframework.web.servlet.view.document.AbstractExcelView) 视图,我们只需继承这个抽象类,然后重写里面的方法即可。
然后我们就可以在controller 方法中,直接返回这个对象就行了。可以使用类似方式:return new ModelAndView(multiSheetsObjectExcelView, dataMap);