我的编程空间,编程开发者的网络收藏夹
学习永远不晚

阿里的Easyexcel读取Excel文件的方法(最新版本)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

阿里的Easyexcel读取Excel文件的方法(最新版本)

  本篇文章主要介绍一下使用阿里开源的Easyexcel工具处理读取excel文件,因为之前自己想在网上找一下这个简单的立即上手的博客,发现很多文章的教程都针对比较旧的版本的Easyexcel,没有使用新版本的方法,导致很多方法都标志过期了或者运行时报错,所以本篇博客主要是使用最新版的Easyexcel去读取excel文件,顺便说一下目前新版本的特性。

优化

  • 目前读取excel文件不再需要指定ExcelTypeEnum,即excel的版本,会自动处理
  • 之前创建ExcelReader都是自己new,现在是通过EasyExcelFactory创建,更加简单和具备通用性。
  • 之前每解析一行的回调的invoke()方法,通用对象Object是list集合,目前是HashMap集合。

debug查看实际注入的值

简单使用读取Excel,返回List集合

通过maven引入依赖

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.0.5</version>
        </dependency>

新建通用监听类StringExcelListener


    
    private static class StringExcelListener extends AnalysisEventListener {

        
        private List<List<String>> datas = new ArrayList<>();

        
        @Override
        public void invoke(Object object, AnalysisContext context) {
            @SuppressWarnings("unchecked") Map<String, String> stringMap = (HashMap<String, String>) object;
            //数据存储到list,供批量处理,或后续自己业务逻辑处理。
            datas.add(new ArrayList<>(stringMap.values()));
            //根据自己业务做处理
        }

        @Override
        public void doAfterAllAnalysed(AnalysisContext context) {
            //解析结束销毁不用的资源
            //注意不要调用datas.clear(),否则getDatas为null
        }

        
        public List<List<String>> getDatas() {
            return datas;
        }

        
        public void setDatas(List<List<String>> datas) {
            this.datas = datas;
        }
    }

创建ExcelReader读取,并从监听类中获取读取的数据

    
    public List<List<String>> writeWithoutHead(InputStream inputStream) {
        StringExcelListener listener = new StringExcelListener();
        ExcelReader excelReader = EasyExcelFactory.read(inputStream, null, listener).headRowNumber(0).build();
        excelReader.read();
        List<List<String>> datas = listener.getDatas();
        excelReader.finish();
        return datas;
    }

完整的Excel简单读取类和测试

测试类:


import com.hiido.services.common.ExcelOptionsService;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;


@RunWith(SpringRunner.class)
@SpringBootTest
public class ExcelOptionsServiceTest {

    @Autowired
    private ExcelOptionsService excelOptionsService;

    
    @Test
    public void testReadExcel() {
        // 这里的excel文件可以 为xls或xlsx结尾
        File file = new File("C:\\Users\\Administrator\\Desktop\\测试.xls");
        List<List<String>> result = new ArrayList<>();
        try {
            result = excelOptionsService.writeWithoutHead(new FileInputStream(file));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        Assert.assertNotNull(result);
        System.out.println("读取结果:" + result);
    }
}


读取类


import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import org.springframework.stereotype.Service;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@Service
public class ExcelOptionsService {

    
    public List<List<String>> writeWithoutHead(InputStream inputStream) {
        StringExcelListener listener = new StringExcelListener();
        ExcelReader excelReader = EasyExcelFactory.read(inputStream, null, listener).headRowNumber(0).build();
        excelReader.read();
        List<List<String>> datas = listener.getDatas();
        excelReader.finish();
        return datas;
    }

    
    private static class StringExcelListener extends AnalysisEventListener {

        
        private List<List<String>> datas = new ArrayList<>();

        
        @Override
        public void invoke(Object object, AnalysisContext context) {
            @SuppressWarnings("unchecked") Map<String, String> stringMap = (HashMap<String, String>) object;
            // 这里可以获取excel的基本信息,包含excel的总行数
            System.out.println("不一定十分准确的总行数:"+context.getTotalCount());
            //数据存储到list,供批量处理,或后续自己业务逻辑处理。
            datas.add(new ArrayList<>(stringMap.values()));
            //根据自己业务做处理
        }

        @Override
        public void doAfterAllAnalysed(AnalysisContext context) {
            //解析结束销毁不用的资源
            //注意不要调用datas.clear(),否则getDatas为null
        }

        
        public List<List<String>> getDatas() {
            return datas;
        }

        
        public void setDatas(List<List<String>> datas) {
            this.datas = datas;
        }
    }
}


注意

如果在正式项目中使用的,要修改一些东西的,我这个只是demo,我为了方便把StringExcelListener 放到内部类了,应该把这个类抽出来作为单独一个service类的

参考资料:

https://blog.csdn.net/alinyua/article/details/82859577 

https://github.com/alibaba/easyexcel/blob/master/quickstart.md

到此这篇关于阿里的Easyexcel读取Excel文件(最新版本)的文章就介绍到这了,更多相关阿里的Easyexcel读取Excel文件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

阿里的Easyexcel读取Excel文件的方法(最新版本)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

阿里的Easyexcel读取Excel文件的方法(最新版本)

这篇文章主要介绍了阿里的Easyexcel读取Excel文件(最新版本)的方法,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-12-16

vue读取本地excel文件的方法是什么

这篇“vue读取本地excel文件的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue读取本地excel文件的方
2023-07-04

java读取excel文件的两种方法

本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下方式一:借用 package com.ij34.util;/** * @author Admin* @date 创建时间:2017年8月29日 下午2:07
2023-05-31

Android应用读取Excel文件的方法

本文实例讲述了Android应用读取Excel文件的方法。分享给大家供大家参考,具体如下: ReadExcel.java文件:public class ReadExcel extends Activity { /** Called when
2022-06-06

java读取excel文件的方法有哪些

1. 使用POI库:POI是Apache的一个开源项目,提供了读取、写入和操作Microsoft Office格式文件的Java API。使用POI可以读取Excel文件中的数据、样式、公式等信息。2. 使用JExcelAPI库:JExce
2023-05-29

使用pandas读取和处理Excel文件的方法

Pandas如何读取Excel文件并处理数据引言:Pandas是一种常用的数据处理和分析工具,它提供了丰富的函数和方法,方便用户对数据进行清洗、转换和分析。在实际工作中,我们经常需要处理Excel格式的数据文件,本文将介绍如何使用Pand
使用pandas读取和处理Excel文件的方法
2024-01-24

简单易学:掌握pandas读取Excel文件的基本操作方法

掌握pandas读取Excel文件的基本操作方法在数据分析和处理中,Excel文件是一种常见的数据来源,Pandas是Python中一个强大的数据分析处理库,可以快速高效地读取Excel文件并进行数据清洗、处理和分析。本文将介绍Panda
简单易学:掌握pandas读取Excel文件的基本操作方法
2024-01-19

Python读取.txt,.md等文本文件的方法

这篇文章将为大家详细讲解有关Python读取.txt,.md等文本文件的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码如下# example.md1 2 34 5 67 8 9 >>> with
2023-06-15

java读取文本文件的方法有哪些

Java读取文本文件的方法有以下几种:1. 使用FileReader和BufferedReader类:使用FileReader类读取文件,并使用BufferedReader类逐行读取文件内容。```javaFile file = new F
2023-09-20

升级主版本到 v2 并自动获取最新版本的方法

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,编程网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《升级主版本到 v2 并自动获取最新版本的方法》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时
升级主版本到 v2 并自动获取最新版本的方法
2024-04-04

winform读取本地文件的方法是什么

在WinForms中,可以使用`OpenFileDialog`对话框来选择本地文件,并使用`StreamReader`类来读取文件内容。以下是读取本地文件的方法示例:1. 在窗体上添加一个按钮,用于触发文件选择对话框:```csharppr
2023-08-19

android读取本地文件的方法是什么

Android读取本地文件的方法有以下几种:1. 使用FileInputStream或FileReader类读取文件内容:```javaFile file = new File("/sdcard/myfile.txt");FileInput
2023-08-26

Java 如何读取文本文件?详细方法与步骤大揭秘(java读取文本文件的方法是什么)

在Java编程中,读取文本文件是一项常见且重要的操作。本文将为你详细介绍Java读取文本文件的方法,帮助你轻松应对各种文件读取需求。一、准备工作在开始读取文本文件之前,我们需要确保以下几点:了
Java 如何读取文本文件?详细方法与步骤大揭秘(java读取文本文件的方法是什么)
Java2024-12-22

Python实现读取文件最后n行的方法

本文实例讲述了Python实现读取文件最后n行的方法。分享给大家供大家参考,具体如下:# -*- coding:utf8-*- import os import time import datetime import math import
2022-06-04

python读取文本文件并输出的方法是什么

Python中读取文本文件并输出的方法有多种,可以根据具体需求选择合适的方法。1. 使用open()函数和read()方法:```pythonfile = open("file.txt", "r") # 打开文件content = fil
2023-08-15

Shell脚本读取ini配置文件的实现方法

本篇内容介绍了“Shell脚本读取ini配置文件的实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、简单版参考stackoverfl
2023-06-09

Python读取大量Excel文件并跨文件批量计算平均值的方法

这篇文章主要介绍了Python读取大量Excel文件并跨文件批量计算平均值,介绍基于Python语言,实现对多个不同Excel文件进行数据读取与平均值计算的方法,需要的朋友可以参考下
2023-02-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录