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);}}
}
同步读取时不需要监听器的,直接将所有数据同时读到内存中。
最后我们再对这两个方法进行比较一下:
两种读取模式:
- 监听器:先创建监听器、在读取文件时绑定监听器。
单独抽离处理逻辑,代码清晰易于维护;一条一条处理,适用于数据量大的场景。
- 同步读:无需创建监听器,一次性获取完整数据。
方便简单,但是数据量大时会有等待时常,也可能内存溢出。
相关文章:
EasyExcel数据导入
前言: 我先讲一种网上信息的获取方式把,虽然我感觉和后面的EasyExcel没有什么关系,可能是因为这个项目这个操作很难实现,不过也可以在此记录一下,如果需要再拆出来也行。 看上了网页信息,怎么抓到&#x…...
20240630 每日AI必读资讯
📚全美TOP 5机器学习博士发帖吐槽:实验室H100数量为0! - 普林斯顿、哈佛「GPU豪门」,手上的H100至少三四百块,然而绝大多数ML博士一块H100都用不上 - 年轻的研究者们纷纷自曝自己所在学校或公司的GPU情况:…...
第十一章 Qt的模型视图
目录 一、模型/视图的原理 1、原理分析 2、模型(数据模型) 3、视图 4、代理 二、文件系统模型 1、项目练习 2、UI 设计 3、代码实现 三、字符串链表模型 QStringListModel 1、项目效果 2、项目实现 四、标准项模型(QStandardItemModel) 1、模型分析 2、项目效…...
力扣 单词规律
所用数据结构 哈希表 核心方法 判断字符串pattern 和字符串s 是否存在一对一的映射关系,按照题意,双向连接的对应规律。 思路以及实现步骤 1.字符串s带有空格,因此需要转换成字符数组进行更方便的操作,将字符串s拆分成单词列表…...
10款好用不火的PC软件,真的超好用!
AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/市场上有很多软件,除了那些常见的大众化软件,还有很多不为人知的小众软件,它们的作用非常强大,简洁…...
Windows怎么实现虚拟IP
在做高可用架构时,往往需要用到虚拟IP,在linux上面有keepalived来实现虚拟ip的设置。在windows上面该怎么弄,keepalived好像也没有windows版本,我推荐一款浮动IP软件PanguVip,它可以实现windows上面虚拟ip的漂移。设置…...
【计算机网络】HTTP——基于HTTP的功能追加协议(个人笔记)
学习日期:2024.6.29 内容摘要:基于HTTP的功能追加协议和HTTP/2.0 HTTP的瓶颈与各功能追加协议 需求的产生 在Facebook、推特、微博等平台,每分每秒都会有人更新内容,我们作为用户当然希望时刻都能收到最新的消息,为…...
【多媒体】Java实现MP4视频播放器【JavaFX】【音视频播放】
在Java中播放视频可以使用多种方案,最常见的是通过Swing组件JFrame和JLabel来嵌入JMF(Java Media Framework)或Xuggler。不过,JMF已经不再被推荐使用,而Xuggler是基于DirectX的,不适用于跨平台。而且上述方案都需要使用第三方库。…...
2024 Parallels Desktop for Mac 功能介绍
Parallels Desktop的简介 Parallels Desktop是一款由Parallels公司开发的桌面虚拟化软件,它允许用户在Mac上运行Windows和其他操作系统。通过强大的技术支持,用户无需重新启动电脑即可在Mac上运行Windows应用程序,实现了真正的无缝切换。 二…...
颍川韩氏,来自战国七雄韩国的豪族
颍川是战国七雄韩国故土,韩国被秦国灭国后,王公贵族们除了坚决反秦的被杀了外,大部分都留存了下来。这些人在楚、汉反秦战争中,成为反秦统一战线的重要力量,其中两人先后被封为重新恢复的韩国的国王。 一个是横阳君韩…...
Spring boot中如何使用Thymeleaf模板
大家好,我是 网创有方。今天给大家分享下Spring boot中如何使用Thymeleaf模板。 在 IntelliJ IDEA 中使用 Thymeleaf 模板引擎来开发 Spring Boot 应用程序是相对简单的。以下是一些基本步骤,帮助你在 IDEA 中设置和使用 Thymeleaf: 创建一个…...
单片机学习(14)--DS18B20温度传感器
DS18B20温度传感器 13.1DS18B20温度传感器基础知识1.DS18B20介绍2.引脚及应用电路3.内部结构框图4.存储器框图5.单总线介绍6.单总线电路规范7.单总线时序结构8.DS18B20操作流程9.DS18B20数据帧 13.2DS18B20温度读取和温度报警器代码1.DS18B20温度读取(1)…...
ue 材质贴图Tiling repeat
材质问题,如下 贴图显然不符合逻辑,太大,并且是一次性贴图 换一个红砖纹理,就看清了,砖太大了 修改: 拖出一个TexCoord,代表坐标,拖出一个参数,代表次数,如…...
【图像超分辨率】一个简单的总结
文章目录 图像超分辨率(Image Super-Resolution, ISR)1 什么是图像超分辨率?2 图像超分辨率通常有哪些方法?(1)基于插值的方法(2)基于重建的方法(3)基于学习的方法(LR im…...
WEB与低代码:B/S架构在开发中的应用与优势
在互联网迅猛发展的今天,WEB应用已经成为人们日常生活和工作中不可或缺的一部分。随着技术的进步和需求的多样化,开发高效、灵活且易于维护的WEB应用变得尤为重要。B/S架构(Browser/Server Architecture)作为一种常见的WEB应用架构…...
内容营销专家刘鑫炜揭秘:姜萍一夜暴红背后的品牌传播密码
在互联网的浪潮下,品牌传播的方式愈发多样和复杂。近日,江苏省涟水中等专业学校的十七岁中专生姜萍因在世界级数学竞赛中取得优异成绩而一夜暴红,成为网络上的热议焦点。 在这个充满变数的时代,谁也无法预测下一个网红会是谁。然…...
安装VEX外部编辑器
Houdini20配置VEX外部编辑器方法_哔哩哔哩_bilibili 下载并安装Visual Studio Code软件:Download Visual Studio Code - Mac, Linux, Windows 在Visual Studio Code软件内,安装相关插件,如: 中文汉化插件vex插件 安装Houdini Expr…...
ISO 19110全局要求类/req/global/bound-association-role要求的详细解释
/req/global/bound-association-role 要求: 如果模型允许在一个关联角色(association role)中存在“rolePlayer”关联,并且该角色属于一个“globalProperty”角色,那么这种绑定必须通过一个绑定的关联角色实体(bound …...
武汉凯迪正大等简述电缆电容检测:原理、应用与重要性
为了确保电缆的安全稳定运行评估电缆绝缘质量以及检测潜在故障,需要对电缆做一些必要的检测。本文将依照凯迪正大的一些经验对电缆电容检测的原理、应用及其重要性进行简单的序述。 一、电缆电容检测的原理 电缆电容检测基于电容的基本特性,电容是指两个…...
python调用阿里云OSS对象存储
1)安装SDK import oss2 print(oss2.__version__) 如果能返回SDK版号,则安装成功 2)配置访问凭证 import oss2 from project1 import settings #以下参数在阿里云账号中可以查到 auth=oss2.Auth(settings.ACCESS_KEY_ID, settings.ACCESS_KEY_SECRET) endpoint=settings.E…...
FreeRTOS任务通知:轻量级任务通信机制详解与实战应用
1. 项目概述:为什么你需要关注FreeRTOS任务通知?在嵌入式实时操作系统(RTOS)的开发中,任务间的通信与同步是核心课题。如果你用过FreeRTOS,肯定对队列、信号量、事件组这些通信机制不陌生。它们功能强大&am…...
LVGL容器控件Contain的10种布局模式全解析:从入门到实战避坑指南
LVGL容器控件Contain的10种布局模式全解析:从入门到实战避坑指南 在嵌入式GUI开发中,如何高效管理界面元素的排列一直是开发者面临的挑战。LVGL作为轻量级通用图形库,其容器控件(Contain)通过10种布局模式提供了灵活的解决方案。本文将带您深…...
OpenVINO AI音频插件:5个本地AI功能让你的Audacity变身专业音频工作室
OpenVINO AI音频插件:5个本地AI功能让你的Audacity变身专业音频工作室 【免费下载链接】openvino-plugins-ai-audacity A set of AI-enabled effects, generators, and analyzers for Audacity. 项目地址: https://gitcode.com/gh_mirrors/op/openvino-plugins-ai…...
ORTC与AI融合:从实时传输到智能通信的架构演进与实践
1. 项目概述:当实时通信遇上人工智能最近几年,我身边不少做音视频通信和做AI算法的朋友,聊天时总绕不开一个话题:ORTC(Object Real-Time Communication)和AI,这两者到底能擦出什么样的火花&…...
基于MCP协议构建加密货币数据查询工具:coinpaprika-mcp详解
1. 项目概述:一个连接加密货币数据世界的桥梁 最近在折腾一个需要实时获取多种加密货币数据的项目,从价格、市值到社区动态,需求五花八门。市面上数据源不少,但要么API调用限制太死,要么数据维度不够全,要…...
告别手动写测试报告:用AI自动生成可视化测试总结
测试报告的价值困境与破局在软件交付的最后关头,测试报告往往陷入一种尴尬的境地。一方面是倒计时的上线压力,另一方面是堆积如山的测试数据。许多测试工程师都有过这样的经历:打开Excel,机械地复制用例执行数、通过率、缺陷数&am…...
OpenAI 把 Codex 塞进手机端了
OpenAI 把 Codex 塞进手机端了 根据 OpenAI,TechCrunch 的最新报道和 Reddit 上的前瞻消息 —— ChatGPT Mobile,正在灰度测试 Codex 预览版。 这不止是个移动端 IDE。 从目前的用例来看,他们的核心意图是:用自然语言在移动端直接…...
基于MCP协议构建Azure DevOps智能助手:连接AI与开发运维的实践指南
1. 项目概述:一个连接开发与运维的智能“翻译官”如果你和我一样,长期在Azure DevOps的流水线、看板和代码仓库里打转,同时又对新兴的AI编程助手(比如Claude、Cursor)爱不释手,那你肯定遇到过这样的困境&am…...
AI智能体项目管理器:从原理到实战的编排框架解析
1. 项目概述:一个为AI智能体设计的项目管理器最近在GitHub上看到一个挺有意思的项目,叫gannonh/agent-pm。光看名字,agent-pm, 很容易让人联想到“代理项目管理”或者“智能体项目经理”。点进去一看,果然,…...
自建密码管理器:基于Web Crypto API与Flask的零知识安全架构实践
1. 项目概述:一个基于Web的密码管理器最近在GitHub上看到一个挺有意思的项目,叫clawvault。乍一看名字,可能会联想到“爪子”和“保险库”,其实它就是一个用Python写的、基于Web界面的密码管理器。这类工具大家应该不陌生…...
