EasyExcel读取指定列数据返回集合

有些时候我们只需要获取Excel中的某一列数据使用,我们就可以将这一列数据读取到集合中以便于后续操作。

1、引入依赖

        <!-- easyexcel -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>3.2.1</version>
        </dependency>

2、工具类方法

public class EasyExcelUtil {
    /**
     * 获取Excel中指定列的数据并返回集合
     * @param inputStream 文件流
     * @param sheetNo Sheet的编码,使用这个来指定读取哪个Sheet
     * @param columnIndex 列的编码,使用这个指定读取那一列的数据
     * @param dataType 数据类型
     * @param <T>
     * @return
     */
    public static <T> List<T> readColumnValues(InputStream inputStream, int sheetNo , int columnIndex, Class<T> dataType) {
        List<T> columnValues = new ArrayList<>();
        EasyExcel.read(inputStream, new AnalysisEventListener<Map<Integer,String>>() {
            @Override
            public void invoke(Map<Integer,String> data, AnalysisContext context) {
                String value = data.get(columnIndex);
                if (StringUtil.isNotEmpty(value)){
                    T convertedValue = convertValue(value, dataType);
                    columnValues.add(convertedValue);
                }
            }

            @Override
            public void onException(Exception exception, AnalysisContext context) throws Exception {
                throw new ServiceException("读取Excel异常!");
            }

            @Override
            public void doAfterAllAnalysed(AnalysisContext context) {
            }
        }).sheet(sheetNo).doRead();
        return columnValues;
    }

    private static <T> T convertValue(String value, Class<T> dataType) {
        if (dataType.equals(String.class)) {
            return dataType.cast(value);
        } else if (dataType.equals(Integer.class)) {
            return dataType.cast(Integer.parseInt(value));
        } else if (dataType.equals(Double.class)) {
            return dataType.cast(Double.parseDouble(value));
        }else {
            // 其他数据类型的转换逻辑
            return null;
        }
    }
}

3、使用

// 读取Excel中点位坐标
List<String> coordList = EasyExcelUtil.readColumnValues(file.getInputStream(), 0, 1, String.class);
posted @ 2024-01-17 16:40  香酥豆腐皮  阅读(1689)  评论(0)    收藏  举报
正在加载今日诗词....