Java操作Excel文档进行读取和写入

目录

读出Excel文档

写入Excel文档


读出Excel文档

使用EasyExcel读取Excel文件: 需要在maven项目中导入EasyExcel依赖

<!-- EasyExcel依赖包 -->
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version>
</dependency>

接下来我们创建一个excle文件,名称为abc.xlsx.

填充如下内容:

根据Excel创建实体对象

@Data
public class abc {public String str;public String  date;public int num;
}

然后我们需要创建一个监视器对象,用来处理读取到数据.

package com.example.station.util;import cn.hutool.core.collection.ListUtil;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.example.station.model.Excel.abc;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.ListUtils;import javax.servlet.ReadListener;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;// 自定义监听器
// 继承 AnalysisEventListener 类, 传入需要监听的对象类型abc,重写其中的方法
// 这里只需要重写 invoke() 和 doAfterAllAnalysed() 方法即可
@Slf4j
public class abclistener extends AnalysisEventListener<abc> {private static final int BATCH_COUNT = 10;private List<abc> cacheDataAbc = new ArrayList<>(BATCH_COUNT);// 这个方法在每一条数据解析完之后会调用// 这里可以对数据进行处理//@Overridepublic void invoke(abc abc, AnalysisContext analysisContext) {log.info("解析到一条数据:{}", abc);cacheDataAbc.add(abc);if (cacheDataAbc.size() >= BATCH_COUNT) {// 处理缓存的数据,当达到了限定的条数,可以批量插入数据库log.info("开始处理缓存数据");cacheDataAbc.clear();// 这里可以调用service层进行数据插入}}// 这个方法在所有数据解析完成之后会调用// 这里可以进行一些善后工作,比如关闭流等//@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {log.info("所有数据解析完成");}
}

 接下来我们就可以进行读取代码编写了:

package com.example.station.util;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.EasyExcelFactory;
import com.example.station.model.Excel.abc;public class ExcelUtil {public static void main(String[] args) {String fileName = "C:\\Users\\Administrator\\Desktop\\abc.xlsx";// 读取Excel文件// 这里的abc.class是你要读取的实体类// new abclistener()是读取监听器// 这里的sheet()方法是指定读取的sheet页,默认是第1个// doRead()方法是读取Excel文件EasyExcel.read(fileName, abc.class, new abclistener()).sheet().doRead();}
}

以下为读取结果:

写入Excel文档

根据你要写入的结构创建实体类

package com.example.station.model.Excel;import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import lombok.Data;import java.util.Date;@Data
public class abc {
// 表头 通过注解 @ExcelProperty(value = "字符串") 来指定这一列的表头名称@ExcelProperty(value = "字符串")public String str;@ExcelProperty(value = "日期")public String  date;@ExcelProperty(value = "数值")public int num;
}
package com.example.station.util;
import com.alibaba.excel.EasyExcel;
import com.example.station.model.Excel.abc;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.ListUtils;import java.util.*;@Slf4j
public class ExcelUtil {public static void main(String[] args) {String fileName = "C:\\Users\\Administrator\\Desktop\\abc.xlsx";// 读取Excel文件// 这里的abc.class是你要读取的实体类// new abclistener()是读取监听器// 这里的sheet()方法是指定读取的sheet页,默认是第1个// doRead()方法是读取Excel文件EasyExcel.read(fileName, abc.class, new abclistener()).sheet().doRead();log.error("读取完成 开始写入");// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭// 这里data()是要写入的数据 EasyExcel.write(fileName, abc.class).sheet("Sheet1").doWrite(data());log.error("写入完成 开始读取");EasyExcel.read(fileName, abc.class, new abclistener()).sheet().doRead();}// 生成要插入的Excel数据private static List<abc> data() {List<abc> list = new ArrayList<>();for (int i = 0; i < 10; i++) {abc data = new abc();data.setStr("字符串" + i);data.setDate(new Date().toString());data.setNum(i+12);list.add(data);}return list;}
}

可以看到数据写入成功 !  

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

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

相关文章

长难句打卡5.31

In a workplace that’s fundamentally indifferent to your life and its meaning, office speak can help you figure out how you relate to your work—and how your work defines who you are. 在一个对你的生活和生活意义漠不关心的工作场所中&#xff0c;办公室语言可以…

揭秘蓝牙AOA定位系统:精准定位,开启智能导航新时代

随着科技的飞速发展&#xff0c;人们对于定位技术的需求也日益增长。在众多定位技术中&#xff0c;蓝牙AOA定位系统以其高精度、低通信开销的特点&#xff0c;逐渐受到广泛关注。接下来给大家简单介绍一下关于蓝牙AOA定位系统的原理、优势及应用场景&#xff0c;带大家领略其带…

情感读本期刊万方收录综合期刊投稿

《情感读本》杂志是由国家新闻出版总署批准&#xff0c;湖北省新闻出版广电局主管&#xff0c;湖北省期刊协会主办的正规综合类期刊。《情感读本》是一本以推动和发展情感教育、素质教育、人文教育为己任&#xff0c;奉行“立足教育&#xff0c;服务社会”的办刊宗旨&#xff0…

Jmeter性能测试-【关联,提取器】

新知识点 关联&#xff1a; 正则表达式提取器 边界提取器 XPath提取器 JSON提取器 梳理框架 1. Jmeter基础 定义&#xff1a;Jmeter是一个开源的性能测试工具&#xff0c;主要用于Web应用和各种服务的性能测试。 主要功能&#xff1a;可以模拟多用户并发访问&#xff0c;测…

Vue3兼容低版本浏览器(ie11,chrome63)

1、插件安装 为了使你的项目兼容 Chrome 63&#xff0c;你需要确保包含适当的 polyfills 和插件配置。你已经在使用 legacy 插件&#xff0c;但在代码中可能缺少一些配置或插件顺序有问题。以下是几个可能的改进&#xff1a; 安装 vitejs/plugin-legacy 插件&#xff1a; 确保…

(2024,Video2Game,NeRF,Mesh,物理模块,游戏引擎)通过单个视频实现实时、交互、逼真且兼容浏览器的环境

Video2Game: Real-time, Interactive, Realistic and Browser-Compatible Environment from a Single Video 公众号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 2. 相关工作 3. Video…

Mysql基础教程(12):JOIN

MySQL JOIN 在 MySQL 中&#xff0c;JOIN 语句用于将数据库中的两个表或者多个表组合起来。 比如在一个学校系统中&#xff0c;有一个学生信息表和一个学生成绩表。这两个表通过学生 ID 字段关联起来。当我们要查询学生的成绩的时候&#xff0c;就需要连接两个表以查询学生信…

绿色积分合法化 时代牺牲品!云联惠

各位朋友&#xff0c;我是吴军&#xff0c;在科技产业界从事多年市场分析工作。今天&#xff0c;我想与你们共同探讨一个曾引起广泛关注的企业案例——云联惠。 云联惠&#xff0c;这个曾被誉为商业创新典范的平台&#xff0c;一度风光无限。在其鼎盛时期&#xff0c;它不仅吸引…

ToDesk提示会话数通道限制 - 解决方案及兑惠码分享

如果您最近在体验ToDesk这款远程操控工具时&#xff0c;遇到了提示信息告知“高速通道服务已到期”或“会话数受限”&#xff0c;这表明您本月享受的免费额度——即120小时的使用时间和最多300次的连接机会——已经耗尽。为了解锁无限制的使用时长与连接次数&#xff0c;建议您…

微信小程序-页面导航

一、页面导航 页面导航指的是页面之间的相互跳转&#xff0c;例如&#xff1a;浏览器中实现页面导航的方式有如下两种&#xff1a; 1.<a>链接 2.location.href 二、小程序中实现页面导航的两种方式 1.声明式导航 在页面上声明一个<navigator>导航组件 通过点击…

智慧楼宇:城市生活的新篇章

在城市的喧嚣与繁华中&#xff0c;楼宇不仅是我们工作与生活的场所&#xff0c;更是智慧科技发展的前沿阵地。当传统的建筑遇上智慧的火花&#xff0c;便诞生了令人瞩目的智慧楼宇。 山海鲸可视化搭建的智慧楼宇数字孪生系统 一、智慧楼宇&#xff0c;定义未来生活 智慧楼宇不…

数字孪生在气象灾害防治中的重要贡献

数字孪生技术在气象灾害防治中正发挥着越来越重要的作用。数字孪生是指通过数字化方式在虚拟空间中构建与现实世界对应的虚拟模型&#xff0c;通过实时数据和模拟技术进行动态映射和交互。利用数字孪生技术&#xff0c;气象部门可以更高效、更精准地监测、预测和应对气象灾害&a…

RAID技术迭代、原理对比、产品梳理(HCIA)

目录 一、RAID技术迭代 传统RAID LUN虚拟化2.0 工作原理&#xff1a; 块虚拟化2.0 为什么有RAID2.0&#xff1f; RAID2.0实现原理&#xff1a; RAID-TPRAID 7 华为RAID-TP技术 RAID的4种工作状态 RAID算法 普通RAID算法 华为动态RAID算法 保险箱盘&#xff08;存掉…

四川汇聚荣聚荣科技有限公司在市场评价好吗?

随着科技行业的迅猛发展&#xff0c;越来越多的科技公司如雨后春笋般涌现&#xff0c;其中不乏一些优秀的企业。四川汇聚荣聚荣科技有限公司便是其中的一员。那么&#xff0c;这家公司在市场上的评价如何呢?接下来&#xff0c;我们将从四个方面进行详细的阐述。 一、公司概况四…

对未知程序所创建的 PDF 文档的折叠书签层级全展开导致丢签的一种解决方法

对需要经常查阅、或连续长时间阅读的带有折叠书签的 PDF 文档展开书签层级&#xff0c;提高阅览导航快捷是非常有必要的。 下面是两种常用书签层级全展开的方法 1、 FreePic2Pdf 1 - 2 - 3 - 4 - 5 - 6&#xff0c;先提取后回挂 2、PdgCntEditor 载入后&#xff0c;直接保存…

AWS中国峰会2024 半日游

亚马逊云科技中国峰会于2024年5月29-30日在上海举办 今年就去了半天&#xff0c;去年也是去过的&#xff0c;不过今年的活动个人感觉比去年略微凌乱了一点。 今年的峰会方向和去年一致&#xff0c;均是AI方向的各项内容&#xff08;基础架构、安全、服务、游戏、驾驶、各行各…

移动电商服务器单点部署

知识图谱 任务一&#xff1a;Web服务器部署 1.知识结构 2.WEB服务器的介绍 Web服务器一般指网站服务器&#xff0c;是指驻留于因特网上提供某种特定类型计算机的程序&#xff0c;Web服务器可以向浏览器等Web客户端提供文档&#xff0c;也可以放置网站文件&#xff0c;让全世界…

day25-XML

1.xml 1.1概述【理解】 万维网联盟(W3C) 万维网联盟(W3C)创建于1994年&#xff0c;又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。 建立者&#xff1a; Tim Berners-Lee (蒂姆伯纳斯李)。 是Web技术领域最具权威和影响力的国际中立性技术标准机构。 到目前为…

Linux下CPU1000%记一次挖矿病毒清理流程

今天top后发现一个进程CPU高1795%&#xff0c;判断是病毒 查找进程ps -elf|grep 进程idpid和ppid查找到sleep进程 ps -ef|grep 4277 查看具体进程内容&#xff0c;ll /proc/进程idpid ll /proc/4277 ls -l /proc/{pid号} ls -l /proc/{pid号}/exe kill掉病毒进程 排查病毒…

springboot+vue 社区养老服务系统

Springbootvue社区居家养老服务系统&#xff0c;数据库mysql&#xff0c;mybatis框架&#xff0c;有可视化页面。 功能&#xff1a; 用户管理 养老服务管理 护理人员管理 服务类型管理 健康状况管理 社区管理 服务区管理 娱乐资讯管理 咨询分类管理 反馈建议 系统简历管理 轮播…