java操作excel最简单的方法-eaxyexcel(最简单使用,详细示例!!!)多种监听器使用方式,以及代码详细解析

操作easyexcel最简单方式,使用阿里巴巴组件easyexcel(操作简单需求,复杂excel可以考虑使用apache的poi,之后有时间也会出poi的文章)

可以参考官方文档 https://easyexcel.opensource.alibaba.com/docs/current/

一、导入easyexcel的pom文件

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

二、接收excel实体类示例(@ExcelProperty(index = 0),index指定列)每个属性代表excel的一列

@Data
public class FactoryTypeDetailDto {
    @ExcelProperty(index = 0)//index0表示对应excel文件的第一列
    private String id;
    @ExcelProperty(index = 1)
    private String name;
    @ExcelProperty(index = 2)
    private String subId;
    @ExcelProperty(index = 3)
    private Integer typeDetail;
}

三、1、业务代码示例(以下为使用自带监听器,这是最简单的使用方式;也可以手动新建一个监听器类来更灵活的配置)适用于只有一个sheet的excel

2.监听器使用第二种方式手动创建监听器

package com.situ.balance.util.excle_listener;

import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.util.ListUtils;
import com.alibaba.fastjson2.JSON;
import lombok.extern.slf4j.Slf4j;

import java.util.List;

@Slf4j
public class SubstationListener implements ReadListener<SubstationInstalledcapacity> {

    /**
     * 每隔5条存储数据库,实际使用中可以100条,然后清理list ,方便内存回收
     */
    private static final int BATCH_COUNT = 100;
    /**
     * 缓存的数据
     */
    private List<SubstationInstalledcapacity> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
    /**
     * 假设这个是一个DAO,当然有业务逻辑这个也可以是一个service。当然如果不用存储这个对象没用。
     */
    private SubstationInstalledcapacityService substationInstalledcapacityService;

    public SubstationListener() {
        // 这里是demo,所以随便new一个。实际使用如果到了spring,请使用下面的有参构造函数
    }

    /**
     * 如果使用了spring,请使用这个构造方法。每次创建Listener的时候需要把spring管理的类传进来
     *
     * @param
     */
    public SubstationListener(SubstationInstalledcapacityService substationInstalledcapacityService) {
        this.substationInstalledcapacityService = substationInstalledcapacityService;
    }

    /**
     * 这个每一条数据解析都会来调用
     *
     * @param data    one row value. Is is same as {@link AnalysisContext#readRowHolder()}
     * @param context
     */
    @Override
    public void invoke(SubstationInstalledcapacity data, AnalysisContext context) {
        log.info("解析到一条数据:{}", JSON.toJSONString(data));
        cachedDataList.add(data);
        // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
        if (cachedDataList.size() >= BATCH_COUNT) {
            saveData();
            // 存储完成清理 list
            cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
        }
    }

    /**
     * 所有数据解析完成了 都会来调用
     *
     * @param context
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // 这里也要保存数据,确保最后遗留的数据也存储到数据库
        log.info("所有数据解析完成!");
    }

    /**
     * 加上存储数据库
     */
    private void saveData() {
        log.info("{}条数据,开始存储数据库!", cachedDataList.size());
        //保存数据库
        substationInstalledcapacityService.saveOrUpdateBatch(cachedDataList);
        log.info("存储数据库成功!");
    }
}

使用监听器时将所需service作为参数传进去,因为监听器不会被spring管理

例如:

EasyExcel.read(filePath, 你自己接收excel的类.class, new ReadListener<你自己接收excel的类>(你需要用到的service)).sheet().doRead();

四、指定sheet用法

String excelpath= "aaa.xlsx";
ExcelReader excelReader = EasyExcel.read(excelpath).build();
//readSheet(0)代表读取第一个sheet
ReadSheet readSheet = EasyExcel.readSheet(0).head(excel接收类.class).registerReadListener(new PageReadListener<excel接收类>(dataList -> {

})).build();

//第二个sheet

ReadSheet readSheet1 = EasyExcel.readSheet(1).head(excel接收类.class).registerReadListener(new PageReadListener<excel接收类>(dataList -> {
})).build();

//最后调用read方法

excelReaderPoli.read(readSheet , readSheet1 );

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Spark是一个开源的分布式计算框架,它可以在大规模数据集上进行高效的数据处理和分析。下面是Spark的详细安装和介绍: 1. 安装Java Spark是基于Java开发的,因此需要先安装Java。可以从Oracle官网下载Java SE Development Kit(JDK)。 2. 下载Spark 可以从Spark官网下载最新版本的Spark。下载后解压缩到本地目录。 3. 配置环境变量 将Spark的bin目录添加到系统的PATH环境变量中,以便在任何地方都可以使用Spark命令。 4. 启动Spark 可以通过命令行启动Spark,也可以使用Spark的Web UI进行操作。启动Spark后,可以使用Spark Shell进行交互式数据分析。 5. 使用Java API Spark提供了Java API,可以使用Java编写Spark应用程序。Java API提供了丰富的功能,包括RDD操作、Spark SQL、Spark Streaming等。 6. 示例代码 以下是一个简单的Spark Java应用程序示例代码: ``` import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; public class SparkApp { public static void main(String[] args) { SparkConf conf = new SparkConf().setAppName("SparkApp").setMaster("local"); JavaSparkContext sc = new JavaSparkContext(conf); JavaRDD<String> lines = sc.textFile("input.txt"); JavaRDD<String> words = lines.flatMap(line -> Arrays.asList(line.split(" ")).iterator()); JavaRDD<String> filteredWords = words.filter(word -> word.contains("Spark")); filteredWords.saveAsTextFile("output.txt"); sc.stop(); } } ``` 以上就是Spark的详细安装和介绍,希望对你有所帮助。 ### 回答2: Apache Spark是一个快速通用的集群计算系统,它提供了高级的数据处理能力,包括批处理、交互式查询、实时流处理和机器学习。下面是Spark的详细安装和介绍,以使用Java API为例: 1. 安装Java:确保已安装Java Development Kit(JDK),Spark要求Java 8或更高版本。 2. 下载Spark:从官方网站(http://spark.apache.org/downloads.html)下载最新的Spark版本。选择预编译的包,下载后解压缩到一个目录。 3. 配置环境变量:将Spark的安装目录添加到系统的PATH环境变量中,以便可以通过命令行访问Spark。 4. 创建Spark应用程序:在Java编程环境中创建一个新的Java项目,并添加Spark的依赖。可以通过Maven或Gradle引入Spark依赖,例如: ```xml <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>3.0.0</version> </dependency> ``` 5. 编写Spark应用程序:使用Java API编写Spark应用程序。首先创建一个SparkConf对象,设置应用程序的配置,如Spark主机和应用程序名称。然后创建一个JavaSparkContext对象,它是使用Spark的入口点。 ```java import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaSparkContext; public class SparkApp { public static void main(String[] args) { SparkConf conf = new SparkConf().setMaster("local").setAppName("My Spark App"); JavaSparkContext sparkContext = new JavaSparkContext(conf); // 在这里编写Spark应用程序的代码 sparkContext.stop(); // 关闭SparkContext } } ``` 6. 运行Spark应用程序:使用Java的命令行工具编译和运行Spark应用程序。 ```shell javac -classpath spark-core_2.12-3.0.0.jar SparkApp.java java -classpath spark-core_2.12-3.0.0.jar:. SparkApp ``` 以上是使用Java API安装和介绍Spark的基本步骤。Spark还提供了更丰富的API和功能,可以用于数据处理、SQL查询、流处理、机器学习、图处理等各种应用场景。可以进一步学习和探索Spark的文档和示例代码,以充分利用其强大的计算能力。 ### 回答3: Spark是一个开源的分布式计算框架,可以方便地进行大数据处理和分析。下面是Spark的最详细安装和介绍以及Java API的说明。 安装Spark: 1. 首先,确保你的机器上已安装Java环境,版本要求是1.8或以上。 2. 从官方网站(https://spark.apache.org/)下载Spark的压缩包,并解压到你想要安装的目录。 3. 在Spark安装目录中,进入`sbin`目录,运行`./start-master.sh`启动Spark的Master节点。然后运行`./start-worker.sh <master-url>`启动Spark的Worker节点。 4. 打开浏览器,访问Master节点的Web界面`http://localhost:8080`,确认Spark的运行状态。 介绍Spark: 1. Spark是基于内存计算的分布式计算框架,提供了高速的数据处理能力和良好的可扩展性。它支持多种编程语言,包括Java、Scala、Python和R。 2. Spark的核心概念是弹性分布式数据集(RDD),它是一种不可变、可分区、可并行计算的数据集合。RDD可以将数据加载到内存中,并在分布式环境中进行高效的转换和操作。 3. 通过Spark的Java API,你可以使用丰富的函数和操作符来对RDD进行处理。你可以进行数据的转换、过滤、聚合等操作,还可以使用Spark提供的机器学习和图计算库进行更复杂的分析。 4. 使用Spark的Java API,你可以轻松地编写分布式计算程序,利用集群中的多台机器来并行处理大规模数据。Spark会自动管理资源分配和任务调度,使得你可以专注于业务逻辑的实现。 5. Spark还提供了一个交互式的Shell环境,可以方便地进行开发和调试。你可以实时执行代码片段,观察结果,并进行迭代和优化。 希望以上内容能帮助你了解并安装Spark,并了解如何使用Spark的Java API进行大数据处理和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值