EasyExcel读取EXcel文件内容

目录

一 官方文档介绍

二 读取文件内容

1.根据文档内容建立读对象

2.创建读监听器

3.测试类代码


一 官方文档介绍

Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。
easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI的sax模式,在上层做了模型转换的封装,让使用者更加简单方便。

二 读取文件内容

自定义文件如图所示:

1.根据文档内容建立读对象

@Setter
@Getter
@EqualsAndHashCode
@ToString
public class ExcelData {@ExcelProperty(value ="班级" )private String classNumber;@ExcelProperty(value ="姓名" )private String name;
}

2.创建读监听器

package read.test;import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Slf4j
public class DataListener implements ReadListener<ExcelData> {private static final int BATCH_SIZE=10;private List<ExcelData> dataList= new ArrayList<>();@Overridepublic void invokeHead(Map<Integer, ReadCellData<?>> headMap, AnalysisContext context) {ReadListener.super.invokeHead(headMap, context);System.out.println("解析到一条头数据");System.out.println(JSON.toJSONString(headMap.get(0)));}@Overridepublic void invoke(ExcelData excelData, AnalysisContext analysisContext) {dataList.add(excelData);if (dataList.size()>=BATCH_SIZE){saveData();dataList.clear();}}@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {saveData();System.out.println("解析完毕");}public void saveData(){System.out.println("正在读取"+dataList.size()+"条数据");System.out.println("**********************************************");dataList.forEach(l->{System.out.println(l.toString());});System.out.println("**********************************************");}
}

3.测试类代码

package read.test;import com.alibaba.excel.EasyExcel;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
@Slf4j
public class TestDemo {@Testpublic void test_read() throws InterruptedException {String filename="C:\\Users\\13404\\Desktop\\桌面附件\\test.xlsx";System.out.println("Excel内容如下:");EasyExcel.read(filename,ExcelData.class,new DataListener()).sheet(0).doRead();}
}

结果:

最后给出官方文档的链接,感兴趣的同学自行了解。关于Easyexcel | Easy Excel (alibaba.com) 

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

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

相关文章

EasyExcel读取Excel数据

流程简述 1、创建一个普通的maven项目 2、导入easyExcel包 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.10</version></dependency> 3、打开需要导入的Excel表格&#xff…

强化学习为 OpenAI 和 Microsoft 创建了有效的防御策略,拓宽了 ChatGPT 的护城河

在这篇博客中,我将回顾使用强化学习 (RL) 创建和改进大型语言模型(例如 ChatGPT)的过程。然后,我将展示 OpenAI 和 Microsoft 如何使用 RL 来防止竞争对手在生成 AI 市场上与他们竞争。然后我会建议新创业公司攻坚堡垒的策略。首先,让我们回顾一下阻止攻击者到达 ChatGPT …

漫画 | 程序员,你得学会踢皮球!

后记&#xff08;凑字数&#xff09;&#xff1a;这篇文章吐槽一下流程给程序员带来的“伤害”&#xff0c; 在公司比较小的时候&#xff0c;通常不存在什么流程&#xff0c;公司变大以后流程不得不建立起来。 我曾经在一个小外企带过&#xff0c;当时公司经营不善&#xff0c;…

虚拟人技术促进文博业数字创新,ChatGPT将拓展虚拟数字人应用

“大家好&#xff0c;我是中国国家博物馆虚拟数智人员工仝古今……”虚拟数字人仝博士自2018年入职以来&#xff0c;第一次通过短视频同观众见面。“仝古今”着重于文物保护修复工作&#xff0c;运用虚拟技术与传承传统工艺相融合&#xff0c;立足于国博丰富的馆藏和展览体系&a…

全网最详细中英文ChatGPT-GPT-4示例文档-从0到1快速入门复杂文本总结应用场景——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

从0到1快速入门复杂文本总结应用场景 Introduce 简介setting 设置Prompt 提示Sample response 回复样本API request 接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例 其它资料下载 ChatGPT是目前最先进的AI聊天机器人&#xff0c;它能够理解图片和文字…

复旦MOSS大模型开源了!Github和Hugging Face同时上线

丰色 萧箫 发自 凹非寺量子位 | 公众号 QbitAI 复旦大模型MOSS&#xff0c;正式开源了&#xff01; 作为国内首个开放测试的类ChatGPT产品&#xff0c;MOSS开源地址一放出&#xff0c;又冲上知乎热搜&#xff1a; 从官网介绍来看&#xff0c;MOSS是一个拥有160亿参数的开源对话…

国内首个类 ChatGPT 模型:复旦大学 MOSS 今日正式开源,RTX 3090 显卡可运行

4 月 21 日消息&#xff0c;复旦大学自然语言处理实验室开发的新版 MOSS 模型今日正式上线&#xff0c;成为国内首个插件增强的开源对话语言模型。 目前&#xff0c;MOSS 模型已上线开源&#xff0c;相关代码、数据、模型参数已在 Github 和 Hugging Face 等平台开放&#xff0…

小程序利用canvas 绘制图案 (生成海报, 生成有特色的头像)

小程序利用canvas 绘制图案 &#xff08;生成海报&#xff0c; 生成有特色的头像&#xff09; 微信小程序生成特色头像&#xff0c;海报等是比较常见的。下面我来介绍下实现该类小程序的过程。 首先选择前端来通过 canvas 绘制。这样比较节省成本&#xff0c;效率也高。小程序…

LLM-2020:GPT-3【参数量:1750亿(175B)】【用于训练的token数量:500B】【OpenAI】

GPT1:Imporoving Language Understanding By Generative Pre-training GPT2:Lanuage Models Are Unsupervised Multitask Learners GPT3:Language Models Are Few-shot Learners GitHub:https://github.com/openai/gpt-3 从GPT三个版本的论文名也能看出各版本模型的重点…

个人使用ChatGLM-6B遇到的部分问题汇总

本文目录 写在最前个人windows电脑部署时遇到KeyError: chatglm问题原因&#xff1a;transformers版本有问题解决方法 OSError/AssertionError/Failed to load cpm_kernels问题原因&#xff1a;配置内容没有修改、依赖包不完整解决方法 想要运行web_demo2.py时遇到No matching …

大佬联合署名!反对 ACL 设置匿名期!

夕小瑶科技说 原创 作者 | 智商掉了一地、Python 近日&#xff0c;自然语言处理领域的多位知名学者联合发起了一项反对 ACL 设置匿名期的联合署名行动&#xff0c;包括著名学者 William Wang 和 Yoav Goldberg 在内&#xff0c;还有Christopher Potts、Hal Daume、Luke Zettl…

人工智能轨道交通行业周刊-第46期(2023.5.22-5.28)

本期关键词&#xff1a;数字孪生、AI铁路人、道岔、施封锁、图像质量评价、大模型小型化 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro轨道…

ChatGPT背后的大模型如何做推理?港中大(深圳)等最新《自然语言推理》综述详述预训练语言模型推理方法...

点击上方“AI遇见机器学习”&#xff0c;选择“星标”公众号 重磅干货&#xff0c;第一时间送 专知 自然语言推理怎么做的&#xff1f; 网站链接&#xff1a;https://arxiv.org/abs/2303.14725 本文从概念上和实践上对自然语言处理(NLP)领域的自然语言推理进行了更清晰的认识。…

ChatGPT和GPT-4的逻辑推理如何?浙大等最新《ChatGPT和GPT-4逻辑推理能力全面评测》论文解答,常规优异新数据差...

来源&#xff1a;专知 运用逻辑推理能力进行全面的自然语言理解尝试。随着生成预训练Transformer 4&#xff08;GPT-4&#xff09;的发布&#xff0c;它在推理任务上被称为“先进”的&#xff0c;我们渴望了解GPT-4在各种逻辑推理任务上的表现。本报告分析了多个逻辑推理数据集…

机器学习0 — 总体架构,ChatGPT时代必须掌握的

1 从ChatGPT看目前AI重要性 随着ChatGPT的一声巨响&#xff0c;拉响了强人工智能的序幕。ChatGPT相对于目前的各种机器人&#xff0c;简直就是弓箭和导弹的区别。沉寂了两三年后&#xff0c;AI如今又一次站在了人类工业的最高舞台。个人认为AI已经成为所有人&#xff0c;特别是…

侯世达《大西洋月刊》撰文:GPT-4写了篇《我为什么要写GEB?》,为何老夫毛了?...

来源&#xff1a;科技世代千高原 作者&#xff1a;侯世达&#xff08;道格拉斯霍夫施塔特&#xff09;2023 年 7 月 8 日 一个快得令人眼花缭乱的聊天机器人无法取代一个有思想、活生生的人类真实而反思的声音。 到目前为止&#xff0c;您很可能已经高度意识到人工智能最近由于…

产线环境故障排查常用套路

更多内容关注微信公众号&#xff1a;fullstack888 线上故障主要会包括cpu、磁盘、内存以及网络问题&#xff0c;而大多数故障可能会包含不止一个层面的问题&#xff0c;所以进行排查时候尽量四个方面依次排查一遍。 同时例如jstack、jmap等工具也是不囿于一个方面的问题的&…

vue使用websocket 导致server崩溃的问题

现象&#xff1a;项目中使用了websocket&#xff08;不管何种websocket库&#xff0c;原生websocket、io.socket&#xff09;,只要websocket服务停止&#xff0c;npm run serve 就崩溃&#xff0c;如果一致调试前后端程序的话&#xff0c;崩溃了得重启&#xff0c;此问题一致困…

QT-多线程与界面之间交互总结

1. 线程与界面组件需要注意的地方 在QThread线程中不能直接创建QWidget之类的界面组件. 因为在QT中,所有界面组件相关的操作都必须在主线程中(也就是GUI thread) 所以, QThread线程不能直接操作界面组件. 2.QThread线程如何操作界面组件-方法1 将多线程类对象封装为GUI界面…

Qt常用对话框设计

一、概述 Qt提供了多种自带的标准对话框&#xff0c;常见的对话框包括文件对话框、颜色对话框、字体对话框、输入对话框、消息对话框。 二、文件对话框 文件对话框通过QFileDialog类实现&#xff0c;通过文件对话框可以打开一个文件浏览对话框&#xff0c;可以实现打开文件、…