5
建议描述
使用版本是 3.1.0 ,在导入CSV 的时候出现了首列无法导入的问题,后来发现是 UTF-8 BOM 编码导致的,已经解决了,解决思路是在获取文件流后先处理bom标识,然后再处理数据的导入。建议官方将此功能集成到框架中。 核心代码如下
public InputStream getInputStream(InputStream in) throws IOException {
PushbackInputStream backStream = new PushbackInputStream(in);
int ch = backStream.read();
if (ch != 0xEF) {
backStream.unread(ch);
} else if ((ch = backStream.read()) != 0xBB) {
backStream.unread(ch);
backStream.unread(0xef);
} else if ((ch = backStream.read()) != 0xBF) {
throw new IOException("错误的CSV文件");
} else {
}
return backStream;
}
data = EasyExcel.read(getInputStream(file.getInputStream())).excelType(ExcelTypeEnum.CSV).head(XXX.class).sheet().doReadSync();