EasyExcel数据导入

前言:

我先讲一种网上信息的获取方式把,虽然我感觉和后面的EasyExcel没有什么关系,可能是因为这个项目这个操作很难实现,不过也可以在此记录一下,如果需要再拆出来也行。

看上了网页信息,怎么抓到?

分析原网站如何获取信息,用了那些接口:

以知识星球用户举例:

打开F12进入控制台

这里可以刷新页面,这个页面的请求就来了

 

复制url

 

 这里推荐一个前端插件:Fehelper

在浏览器插件商店应该就可以直接下载了

这个插件的作用就是格式化上面的数据,要不然我们看到的就是一堆乱码

到此,这个网页的信息就全在这个里面了。

下面才是这篇文章的重点:

EasyExcel: 

首先接触到了一个新的东西(技术)

肯定是看官方文档:

关于Easyexcel | Easy Excel 官网

1:第一步也是引入依赖:

        <!-- easy Excel --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.0</version></dependency>
这里也有一个小插曲:

就是我在找这个依赖的时候,我网好卡,打不开那个官网,所以,我就直接到maven repository官网里面直接去找了。

在此也贴一下这个步骤把

 

选取一个用的人多的,稳定点的 

2:第二步获取一个最简单读的对象:

这里为什么叫最简单读的对象,其实是因为官网上这么说的哈哈哈

package com.usercenter.usercenterproject.once;import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;/***/
@Data
public class XingQiuTableUserInfo {/*** id*/@ExcelProperty("成员编号")private String planetCode;/*** 用户昵称*/@ExcelProperty("成员昵称")private String username;}

 直接复制过来即可

这里需要说明一下@ExcelProperty这个注解

@ExcelProperty 注解是用来指定 Excel 文件中的某一列与 Java 对象中的成员变量之间的映射关系的

什么意思呢?

先查看一下我们后面要操作的excel表格:

就是将这两列映射到代码中对应的变量上

3:第三步就是开始读取数据了:

这里有两种方法:

第一种是监听器

第二种是同步的读取

先介绍第一种:
监听器: 
package com.usercenter.usercenterproject.once;import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import lombok.extern.slf4j.Slf4j;// 有个很重要的点 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去
@Slf4j
public class TableListener implements ReadListener<XingQiuTableUserInfo> {/*** 这个每一条数据解析都会来调用** @param data    one row value. Is is same as {@link AnalysisContext#readRowHolder()}* @param context*/@Overridepublic void invoke(XingQiuTableUserInfo data, AnalysisContext context) {System.out.println("数据是:"+data);}/*** 所有数据解析完成了 都会来调用** @param context*/@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {System.out.println("已监听完成");}
}

还是到官网复制代码:复制完之后重写invoke和doAfterAllAnalysed方法

 开始读取:
public class ImportExcel {public static void main(String[] args) {//Excel数据文件放在自己电脑上,能够找到的路径String fileName = "D:\\User-Center-Code\\UserCenterProject\\src\\main\\resources\\testExcel.xlsx";readByListener(fileName);}private static void ReadByListener(String fileName){EasyExcel.read(fileName, XingQiuTableUserInfo.class, new TableListener()).sheet().doRead();}
}

文件名直接是excel的绝对路径

这一段也是去官网复制的,自己需要稍作修改即可

第二种方法:
同步读取
public class ImportExcel {public static void main(String[] args) {//Excel数据文件放在自己电脑上,能够找到的路径String fileName = "D:\\User-Center-Code\\UserCenterProject\\src\\main\\resources\\testExcel.xlsx";
//          readByListener(fileName);synchronousRead(fileName);}/*** 同步的返回,不推荐使用,如果数据量大会把数据放到内存里面*/public static void synchronousRead(String fileName) {// 这里 需要指定读用哪个class去读,然后读取第一个sheet 同步读取会自动finishList<XingQiuTableUserInfo> list = EasyExcel.read(fileName).head(XingQiuTableUserInfo.class).sheet().doReadSync();for (XingQiuTableUserInfo info : list) {System.out.println(info);}}
}

同步读取时不需要监听器的,直接将所有数据同时读到内存中。

最后我们再对这两个方法进行比较一下:

两种读取模式:

  1. 监听器:先创建监听器、在读取文件时绑定监听器。

        单独抽离处理逻辑,代码清晰易于维护;一条一条处理,适用于数据量大的场景。

  1. 同步读:无需创建监听器,一次性获取完整数据。

        方便简单,但是数据量大时会有等待时常,也可能内存溢出。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/38328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

周记-2024第26周-6.25~6.30

现在是周日晚上21:58&#xff0c;我开始做本周总结。 工作 .1 开始接手量产模型的训练&#xff0c;新工作有新的小组长&#xff0c;我还是有些羞怯&#xff0c;不是很好意思频繁找他。要自信一点&#xff0c;大方一点&#xff0c;一个堂堂男子汉&#xff0c;怎么感觉工作中娘…

SpringBoot + mkcert ,解决本地及局域网(内网)HTTPS访问

本文主要解决访问SpringBoot开发的Web程序,本地及内网系统,需要HTTPS证书的问题。 我测试的版本是,其他版本不确定是否也正常,测试过没问题的小伙伴,可以在评论区将测试过的版本号留下,方便他人参考: <spring-boot.version>2.3.12.RELEASE</spring-boot.vers…

朋友问我Java中“::”是什么意思?我汗流浃背了......

目录 一&#xff1a;什么是&#xff1a;&#xff1a;&#xff1f; 二&#xff1a;方法引用的几种类型 1.引用静态方法 2.引用特定对象的实例方法 3.引用特定类型的任意对象的实例方法 4.引用构造方法 三&#xff1a;方法引用的适用场景 四&#xff1a;总结 一&#xff1…

ssh转发功能入门

端口转发概述 端口转发&#xff0c;能够将其他TCP端口的网络数据通过SSH链路转发&#xff0c;并且提供了ssh的加密和解密的服务。 ssh端口转发有如下这些优点&#xff1a; 提供了ssh的加密传输&#xff0c;利于安全能够突破防火墙限制 目前ssh端口转发有如下几种方式&#x…

spring模块(二)SpringBean(2)BeanWrapperImpl

一、介绍 1、简介 BeanWrapper是Spring中一个很重要的接口&#xff0c;Spring在通过配信息创建对象时&#xff0c;第一步首先就是创建一个BeanWrapper。 Spring低级JavaBeans基础设施的中央接口。通常来说并不直接使用BeanWrapper&#xff0c;而是借助BeanFactory或者DataBi…

eFuse基本概念

From&#xff1a;GTP-4o eFuse&#xff08;电子熔丝&#xff09;是一种在集成电路&#xff08;IC&#xff09;设计中常用的可编程熔丝技术。它在芯片中起着至关重要的作用&#xff0c;主要用于配置、调整、修复和安全相关的功能。以下是关于 eFuse 在芯片中的用途和相关技术的…

学习一下宏的##和...

##&#xff1a;如果参数不存在则忽略逗号和参数 ...&#xff1a;可变参数 栗子&#xff1a; #define Debug(fmt, args...) LOG("DEBUG", fmt, ##args) ...: ... 是C和C预处理器中的一个特殊标记&#xff0c;用于表示一个可变数量的参数。在宏定义中&#xff0c;可…

【课程总结】Day13(上):使用YOLO进行目标检测

前言 在上一章《【课程总结】Day11&#xff08;下&#xff09;&#xff1a;YOLO的入门使用》的学习中&#xff0c;我们通过YOLO实现了对图片的分类任务。本章的学习内容&#xff0c;将以目标检测为切入口&#xff0c;了解目标检测流程&#xff0c;包括&#xff1a;数据标准、模…

使用NFS网关功能将HDFS挂载到本地系统

HDFS安装教程 HDFS安装教程http://t.csdnimg.cn/2ziFd 使用NFS网关功能将HDFS挂载到本地系统 简介 HDFS提供了基于NFS&#xff08;Network File System&#xff09;的插件&#xff0c;可以对外提供NFS网关&#xff0c;供其它系统挂载使用。 NFS 网关支持 NFSv3&#xff0c;并…

【操作系统】进程管理——进程的概念、组成和特征(个人笔记)

学习日期&#xff1a;2024.6.29 内容摘要&#xff1a;进程的基本概念和特征、状态和转换 进程的概念 程序与进程 程序&#xff1a;是静态的&#xff0c;是存放在磁盘里的可执行文件&#xff0c;就是一系列的指令集合 进程&#xff08;Process&#xff09;&#xff1a;是动态…

GPT-5:下一代AI如何彻底改变我们的未来

GPT-5 发布前瞻&#xff1a;技术突破与未来展望 随着科技的飞速发展&#xff0c;人工智能领域不断迎来新的突破。根据最新消息&#xff0c;OpenAI 的首席技术官米拉穆拉蒂在一次采访中确认&#xff0c;GPT-5 将在一年半后发布&#xff0c;并描述了其从 GPT-4 到 GPT-5 的飞跃如…

Linux随记(十)

一、升级harbor v2.6.4 --> harbor-offline-installer-v2.11.0-rc3 --> v2.9.4 – 随记 漏洞信息&#xff1a; CVE-2023-20902timing condition in Harbor 2.6.x and below, Harbor 2.7.2 and below, Harbor 2.8.2 and below, and Harbor 1.10.17 and below allows an…

js自定义内容生成二维码,qrcodejs的使用

qrcodejs qrcodejs是基于原生js的文本转换成二维码的库&#xff0c;轻量且使用方法简单&#xff0c;它的实现原理是通过canvas将重新编码的内容绘制在页面元素上&#xff0c; 使用qrcodejs时可以选择引入它的cdn或者使用npm下载 <script type"text/javascript" …

Linux的IO易错点总结

本文主要记录IO的一些易错操作。 阻塞IO和非阻塞IO&#xff0c;一般都是针对数据读取的&#xff0c;因为write是主动行为&#xff0c;不存在阻塞这一说。 非阻塞式IO&#xff0c;一般都要配合while轮询来读取数据。 IO多路复用 当只检测一路IO的时候&#xff0c;和普通IO的作…

软考满分范文“论模型驱动架构设计方法及其应用”,软考高级,系统架构设计师

论文真题 模型驱动架构设计是一种用于应用系统开发的软件设计方法,以模型构造、模型转换和精化为核心,提供了一套软件设计的指导规范。在模型驱动架构环境下,通过创建出机器可读和高度抽象的模型实现对不同问题域的描述,这些模型独立于实现技术,以标准化的方式储存,利用…

linux unzip指令

在Linux中&#xff0c;unzip 命令通常用于解压 .zip 文件。默认情况下&#xff0c;unzip 命令会输出解压过程中的一些信息&#xff0c;但不会生成一个完整的报告。但是&#xff0c;你可以通过重定向输出和结合其他命令来生成一个更详细的报告。 以下是一些方法来使用 unzip 命…

鸿蒙开发Ability Kit(程序框架服务):【向用户申请授权】

向用户申请授权 当应用需要访问用户的隐私信息或使用系统能力时&#xff0c;例如获取位置信息、访问日历、使用相机拍摄照片或录制视频等&#xff0c;应该向用户请求授权&#xff0c;这部分权限是user_grant权限。 当应用申请user_grant权限时&#xff0c;需要完成以下步骤&a…

[AIGC] 深入理解 Crontab:定时任务的艺术

在 Unix 或者 Linux 环境下&#xff0c;有一种被广泛使用的工具可以帮助我们自动执行定时任务&#xff0c;那就是 crontab。本篇文章将带你详细了解 crontab 的相关知识。 文章目录 1. 什么是 Crontab2. Crontab 的结构3. 如何使用 Crontab4. 注意事项 相关疑问1. crontab的系统…

6.The hardest part about learing hard things(学一件难的事,难在哪里)

I’ve been recording a lot of podcast interviews for my upcoming book, Ultralearning.One of the reurring themes I’ve noticed in our conversations is that how people feel about learning is the overwhelming cause of the results they experience. 我为我的新书…

IOS越狱源集合(2024)

常用源 https://wwg135.github.io https://huayuarc.cn/ https://cydia.akemi.ai/ https://laileld.github.io/repo https://themepro.yourepo.com/ https://apt.geometricsoftware.se/ https://repo.anthopak.dev https://www.yourepo.com/ https://julio.hackyouriphone.org…