首页 > 其他分享 >EasyExcel读取指定列数据返回集合

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

时间:2024-01-17 16:45:54浏览次数:29  
标签:return 读取 dataType EasyExcel value param 集合 public

有些时候我们只需要获取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);

标签:return,读取,dataType,EasyExcel,value,param,集合,public
From: https://www.cnblogs.com/Snowclod/p/17970017

相关文章

  • Java Collections.frequency()方法返回集合中指定元素个数
    JavaCollections.frequency()方法具有什么功能呢?下文笔者讲述Collections.frequency()方法的功能简介说明,如下所示:Collections.frequency()方法的功能:返回一个int值,其值给指定对象在集合中出现的次数Collections.frequency()方法的语法publicstaticintfreque......
  • 实验三Spark 读取文件系统的数据
    Spark读取文件系统的数据(1)在spark-shell中读取Linux系统本地文件“/home/hadoop/test.txt”,然后统计出文件的行数;(2)在spark-shell中读取HDFS系统文件“/user/hadoop/test.txt”(如果该文件不存在,请先创建),然后,统计出文件的行数;(3)编写独立应用程序,读取HDFS系统文件“/u......
  • 使用zipFile读取文件时遇到的问题及解决(KeyError: "There is no item named 'xxx' in
    问题描述在Windows上跑一段代码时,遇到如下问题:KeyError:"Thereisnoitemnamed'CDR_Data\\\\CDR.Corpus.v010516\\\\CDR_DevelopmentSet.PubTator.txt'inthearchive"原因分析这是一段Python代码,代码中使用到了zipfile库,它首先创建了一个ZipFile对象,然后在调用read()......
  • Elastic实战:彻底解决spring-data-elasticsearch日期、时间类型数据读取报错问题
    0.引言在使用spring-data-elasticsearch读取es中时间类型的数据时出现了日期转换报错,不少初学者会在这里困惑很久,所以今天我们专门来解读该问题的几种解决方案。1.问题分析该问题的报错形式一般是:Failedtoconvertfromtype[java.lang.String]totype[java.util.Date]f......
  • 性能篇:List集合遍历元素用哪种方式更快?
    嗨大家好,我是小米!今天给大家分享一篇关于Java集合框架性能的文章,话题是:“如果让你使用for循环以及迭代循环遍历一个ArrayList,你会使用哪种方式呢?原因是什么?LinkedList呢?”废话不多说,让我们直入主题!ArrayList的get元素源码介绍ArrayList,作为Java集合框架中的一个重要类,是基于数组......
  • 【服务器数据恢复】服务器迁移数据时lun数据丢失,无法读取的数据恢复案例
    服务器数据恢复环境&服务器故障:一台安装Windows操作系统的服务器。工作人员在迁移该服务器中数据时突然无法读取数据,服务器管理界面出现报错。经过检查发现服务器中一个lun的数据丢失。服务器数据恢复过程:1、将故障服务器中所有磁盘编号后取出,硬件工程师对所有磁盘进行检测后没......
  • 解决 Idea HttpClient 无法读取 http-client.env.json 配置的问题
    前言byd就我遇到了这种情况是吧,百度搜的全是nm复制粘贴的垃圾文章步骤创建一个.http文件,使用idea工具栏创建一个env.json,内容无所谓按理说现在应该就能正常使用了,但是如果到这一步还没法读取到这个环境的话,继续向下看右键env.json看看有没有这个,如果没......
  • Python列表差异值统计:集合操作、列表推导式、对称差集详解
     在Python中,统计两个列表的差异值有多种方法,其中包括使用集合操作、列表推导式等。下面我将通过实例详细讲解几种常见的方法,并提供相应的实例源代码。方法一:使用集合操作list1=[1,2,3,4,5]list2=[3,4,5,6,7]#找到在list1中而不在list2中的元素difference1......
  • IIC:DDM_SFP光模块参数读取
    光模块数字诊断监控数据读取逻辑报告I2C从设备地址0xA2访问的256字节的数据包括一些常量,也包含一些只读的变量,甚至还有一些可写的变量。数字诊断内存映射专用数据字段描述如下: 图1期间地址分布说明 图2检测信号地址 Finisar公司的DDM数据位于器件地址A2H,具体信号数据......
  • 【Java 进阶篇】使用 Stream 流和 Lambda 组装复杂父子树形结构(List 集合形式)
    目录前言一、以部门结构为例1.1实体1.2返回VO1.3具体实现1.4效果展示二、以省市县结构为例2.1实体2.2返回VO2.3具体实现2.4效果展示三、文章小结前言在最近的开发中,一星期内遇到了两个类似的需求:返回组装好的部门树、返回组装好的地区信息树,最终都需要返回List集合对象给前端......