iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >阿里的Easyexcel读取Excel文件的方法(最新版本)
  • 902
分享到

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

阿里的Easyexcel读取Excel文件阿里的Easyexcel 2022-12-16 12:12:06 902人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录优化简单使用读取excel,返回List集合完整的Excel简单读取类和测试  本篇文章主要介绍一下使用阿里开源的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文件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

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

本文链接: https://www.lsjlt.com/news/175042.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 阿里的Easyexcel读取Excel文件的方法(最新版本)
    目录优化简单使用读取Excel,返回List集合完整的Excel简单读取类和测试  本篇文章主要介绍一下使用阿里开源的Easyexcel工具处理读取excel文件...
    99+
    2022-12-16
    阿里的Easyexcel读取Excel文件 阿里的Easyexcel
  • vue读取本地excel文件的方法是什么
    这篇“vue读取本地excel文件的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue读取本地excel文件的方...
    99+
    2023-07-04
  • java读取excel文件的两种方法
    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下方式一:借用 package com.ij34.util;import java.io.File; import java.io.IOExcept...
    99+
    2023-05-31
    java excel ava
  • java读取excel文件的方法有哪些
    1. 使用POI库:POI是Apache的一个开源项目,提供了读取、写入和操作Microsoft Office格式文件的Java A...
    99+
    2023-05-29
    java读取excel文件 java
  • vue如何读取本地的excel文件
    小编给大家分享一下vue如何读取本地的excel文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!我想实现读取一个本地的xlsx...
    99+
    2024-04-02
  • Excel文件读取的两种方式
    1、Pandas库的读取操作 from pandas import read_excel dr=read_excel(filename,header) dr#dataframe数据 dw=DataFrams(data=dict,colum...
    99+
    2023-01-31
    两种 方式 文件
  • Java读取文本文件的各种方法
    目录1、方法方法一、 使用BufferedReader类方法二、使用 FileReader 类方法三、使用 Scanner 类方法四、读取列表中的整个文件2、语法方法五、将文本文件读...
    99+
    2024-04-02
  • 使用pandas读取和处理Excel文件的方法
    Pandas如何读取Excel文件并处理数据 引言:Pandas是一种常用的数据处理和分析工具,它提供了丰富的函数和方法,方便用户对数据进行清洗、转换和分析。在实际工作中,我们经常需要处理Excel格式的数据文件,本文将介绍如何...
    99+
    2024-01-24
    Excel Pandas 读取 处理数据
  • Python读取.txt,.md等文本文件的方法
    这篇文章将为大家详细讲解有关Python读取.txt,.md等文本文件的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码如下# example.md1 2 34&nbs...
    99+
    2023-06-15
  • 简单易学:掌握pandas读取Excel文件的基本操作方法
    掌握pandas读取Excel文件的基本操作方法 在数据分析和处理中,Excel文件是一种常见的数据来源,Pandas是Python中一个强大的数据分析处理库,可以快速高效地读取Excel文件并进行数据清洗、处理和分析。本文将介...
    99+
    2024-01-19
    Excel Pandas 操作
  • java读取文本文件的方法有哪些
    Java读取文本文件的方法有以下几种:1. 使用FileReader和BufferedReader类:使用FileReader类读取...
    99+
    2023-09-20
    Java
  • 升级主版本到 v2 并自动获取最新版本的方法
    对于一个Golang开发者来说,牢固扎实的基础是十分重要的,编程网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《升级主版本到 v2 并自动获取最新版本的方法》,主要介绍了,希望对大家的知...
    99+
    2024-04-04
  • 用 HTML 读取文本文件的最佳实践
    使用 <input type="file"> 元素并利用 filereader api 可以通过 html 读取文本文件。最佳实践包括使用 accept ...
    99+
    2024-04-09
    html 文本文件
  • C#读取文件的方法
    本篇内容介绍了“C#读取文件的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#读取文件高效方法问题的提出:你平时是怎么读取文件的?使用...
    99+
    2023-06-18
  • spark读取本地文件的方法有哪些
    在Spark中,可以使用以下几种方式来读取本地文件: 使用sc.textFile()方法读取文本文件: from pyspark...
    99+
    2024-04-02
  • android读取本地文件的方法是什么
    Android读取本地文件的方法有以下几种:1. 使用FileInputStream或FileReader类读取文件内容:```ja...
    99+
    2023-08-26
    android
  • winform读取本地文件的方法是什么
    在WinForms中,可以使用`OpenFileDialog`对话框来选择本地文件,并使用`StreamReader`类来读取文件内...
    99+
    2023-08-19
    winform
  • spark读取本地文件的方法是什么
    在Spark中读取本地文件的方法通常使用SparkSession的read方法来实现。以下是一个示例代码: from pyspark...
    99+
    2024-04-02
  • 利用POI读取word、Excel文件的最佳实践教程
    前言POI是 Apache 旗下一款读写微软家文档声名显赫的类库。应该很多人在做报表的导出,或者创建 word 文档以及读取之类的都是用过 POI。POI 也的确对于这些操作带来很大的便利性。我最近做的一个工具就是读取计算机中的 word ...
    99+
    2023-05-30
    poi 读取文件 word
  • python读取.mtx文件的方法
    小编给大家分享一下python读取.mtx文件的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌入式应用开发;5、游...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作