EasyExcel 学习之 导出 “文件编码问题”
EasyExcel 学习之 导出 “文件编码问题”
- 现象
- 原因
- 解决
现象
EasyExcel
支持导出 xlsx
、xls
、csv
三种文件格式。在使用过程中发现,xlsx
、xls
两种格式导出文件通过 Office
或者 WPS
打开没有中文乱码问题,但是 csv
格式导出文件出现中文乱码问题。
原因
老生常谈
,既然出现乱码问题,就一定是编码不正确。
一般请求,我们都是通过 content-type
指定格式和编码,协助浏览器使用正确的编码进行渲染。
下载请求,作为一种特殊的请求,文件渲染
并非由浏览器进行。故而,下载时需要指明文件的编码,否则就可能出现中文乱码问题。
解决
ExcelWriter excelWriter = EasyExcel.write(baos)
.charset(Charset.forName("GBK")) // 或者 UTF-8
.autoCloseStream(true)
.excludeColumnFieldNames(Lists.newArrayList())
.excelType(ExcelTypeEnum.XLSX).build();
WriteSheet writeSheet = EasyExcel.writerSheet(sheetNo, sheetName).head(clazz).build();
excelWriter.write(sheetData, writeSheet);
excelWriter.finish();