[alibaba/easyexcel]建议增加对CSV格式bom头的支持

2023-04-23 946 views
1
建议描述

使用版本是 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();

回答

4

已经在最新版本修复

9
3297 导出字节流也建议支持一下