当前位置: 首页 > news >正文

JAVA代码优化:Easy Excel(操作Excel文件的开源工具)

Easy Excel官网:

EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel (alibaba.com)

https://easyexcel.opensource.alibaba.com/

Easy Excel的特点和优势:

  1. 简单易用:Easy Excel提供了简洁的API,使用起来非常方便。开发人员可以通过几行代码就能实现Excel文件的读写操作。

  2. 高性能:Easy Excel采用了基于流的方式进行读写操作,能够处理大规模的Excel文件,并且具有较高的读写性能。

  3. 多格式支持:Easy Excel支持多种常见的Excel文件格式,包括xls、xlsx等。开发人员可以根据自己的需求选择适合的格式进行读写操作。

  4. 数据转换:Easy Excel提供了灵活的数据转换功能,可以将Excel文件中的数据转换成Java对象或者将Java对象转换成Excel文件中的数据。

  5. 样式设置:Easy Excel支持设置Excel文件中单元格的样式,包括字体、颜色、边框等,可以使生成的Excel文件更加美观。

  6. 导入导出功能:Easy Excel提供了便捷的导入导出功能,可以快速地将Java对象导出为Excel文件,或者将Excel文件中的数据导入到Java对象中进行处理。 

前期准备:

Excel表格位置为(d:\\read.xlsx):

 导入依赖:

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

DemoData对象类:

package com.muyuan.review.pojo;import com.alibaba.excel.annotation.ExcelProperty;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;import java.util.Date;@Getter
@Setter
@EqualsAndHashCode
public class DemoData {//注意名字与表格列名匹配//否则会报错  can not find data format for://字段顺序与表格列顺序一致//注解优先级大于索引@ExcelProperty("数字")private Double doubleData;@ExcelProperty("用户名")private String string;@ExcelProperty("日期")private Date date;
}

简单用法一:

ReadDemo:

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.PageReadListener;
import com.alibaba.fastjson.JSON;
import com.muyuan.review.pojo.DemoData;
import lombok.extern.slf4j.Slf4j;@Slf4j
public class ReadDemo {public static void main(String[] args) {// 写法1:JDK8+ ,不用额外写一个DemoDataListener// since: 3.0.0-beta1//原:  String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";//改: 获取文件路径String fileName = "d:\\read.xlsx";// 这里默认每次会读取100条数据 然后返回过来 直接调用使用数据就行// 具体需要返回多少行可以在`PageReadListener`的构造函数设置EasyExcel.read(//文件路径fileName,//字体类的字节码DemoData对象DemoData.class,//读取到一条数据的监听器new PageReadListener<DemoData>(dataList -> {for (DemoData demoData : dataList) {log.info("读取到一条数据{}",//格式化转化读到的数据转化为JSON字符串JSON.toJSONString(demoData));}})).sheet().doRead();}
}

结果:

简单用法二(使用监听器): 

注意:很重要的点 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去

 监听器(ReadDemoListener):

package com.muyuan.review.listener;import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSON;
import com.muyuan.review.pojo.DemoData;
import lombok.extern.slf4j.Slf4j;import javax.servlet.ReadListener;
import javax.swing.event.AncestorListener;
import java.io.IOException;/*** @Classname ReadDemoListener* @Description* @Date 2023/12/3 12:17* @Created by 玉满堂*/
// 有个很重要的点 DemoDataListener 不能被spring管理,
// 要每次读取excel都要new,然后里面用到spring可以构造方法传进去
//DemoData读取到每一个对象的泛型
@Slf4j
public class ReadDemoListener extends AnalysisEventListener<DemoData> {@Overridepublic void invoke(DemoData data, AnalysisContext context) {//没读取到一条数据,执行一次System.out.println(JSON.toJSONString(data));}@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {// 读取完所有执行log.info("所有数据解析完成!");}}

ReadDemo:

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.PageReadListener;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.fastjson.JSON;
import com.muyuan.review.listener.ReadDemoListener;
import com.muyuan.review.pojo.DemoData;
import lombok.extern.slf4j.Slf4j;@Slf4j
public class ReadDemo {public static void main(String[] args) {// 写法1:JDK8+ ,不用额外写一个DemoDataListener// since: 3.0.0-beta1//原:  String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";//改: 获取文件路径String fileName = "d:\\read.xlsx";EasyExcel.read(//文件路径fileName,//文件字节码对象DemoData.class,//监听器(在解析过程中接收和处理数据)new ReadDemoListener())//指定要读取的Sheet页,默认为第一个Sheet页.sheet()//执行实际的读取和解析操作.doRead();}
}

结果:

相关文章:

JAVA代码优化:Easy Excel(操作Excel文件的开源工具)

Easy Excel官网&#xff1a; EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel (alibaba.com) https://easyexcel.opensource.alibaba.com/ Easy Excel的特点和优势&#xff1a; 简单易用&#xff1a;Easy Excel提供了简洁的API&#xff0c;使用起来非常方便。开发…...

Linux Python ping3库使用教程(ping3命令、ping命令)

文章目录 Linux Python ping3库使用教程1. 环境准备2. ping3库安装3. ping3基本使用4. ping3进阶使用5. 常见问题解答5.1 ping3库可以在Windows系统中使用吗&#xff1f;5.2 如何处理ping操作超时的情况&#xff1f;5.3 ping3库支持IPv6吗&#xff1f; Linux Python ping3库使用…...

分享一些基于php商城案例

案例1&#xff1a; ​​​​​​http://www.9520.xin/ 案例2&#xff1a; http://ptll.hasbuy.com/ 案例3&#xff1a; http://likeshop.9520.xin/mobile 案例4&#xff1a; http://www.hasbuy.com/...

SpringSecurity 三更草堂 学习笔记

SpringSecurity从入门到精通 0. 简介 Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro&#xff0c;它提供了更丰富的功能&#xff0c;社区资源也比Shiro丰富。 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的…...

基于Java SSM仓库管理系统

企业仓库有多个库房&#xff0c;用来分别存放生产需要的各种零件&#xff0c;仓库管理系统对此进行科学的管理。仓库管理系统管理的对象及操作如下&#xff1a; 管理员信息&#xff1a;工号、姓名、性别、年龄、电话、工资等。 库房信息&#xff1a;编号、地址、面积等。 零件信…...

基于Spark对消费者行为数据进行数据分析开发案例

原创/朱季谦 本文适合入门Spark RDD的计算处理。 在日常工作当中&#xff0c;经常遇到基于Spark去读取存储在HDFS中的批量文件数据进行统计分析的案例&#xff0c;这些文件一般以csv或者txt文件格式存在。例如&#xff0c;存在这样一份消费者行为数据&#xff0c;字段包括消费…...

Docker镜像制作与推送

目录 Docker镜像制作 搭建私服 将本地镜像推送到私有库 Docker镜像制作 以创建一个新ubuntu镜像&#xff0c;并安装vim命令示例 运行一个ubuntu镜像&#xff0c;发现在镜像里面无法使用vim命令&#xff0c;因为该ubuntu镜像只包括了其最基本的内核命令 [rootlocalhost ~]…...

Pandas时序数据分析实践—基础(1)

目录 1. Pandas基本结构2. Pandas数据类型2.1. 类型概述2.1.1. 整数类型&#xff08;int&#xff09;&#xff1a;2.1.2. 浮点数类型&#xff08;float&#xff09;&#xff1a;2.1.3. 布尔类型&#xff08;bool&#xff09;&#xff1a;2.1.4. 字符串类型&#xff08;object&a…...

5.C转python

新始: 13.列表可被改变(数据),元组不可被改变(数据),二者皆与C中的数组的大致相同 14.创建列表方法: 1.一个[ ]就是一个空的列表 2.使用list函数来创建列表 如: 15.可以在[ ]内部指定列表的初始值,打印方法: 如: 16.在python中,在同一个列表中,可以放不同类型的变量(也可…...

输出SearchFacesResponse对象的JSON格式字符串回包乱码解决方案

输出SearchFacesResponse对象的JSON格式字符串设置响应内容类型为"application/json;charsetutf-8"获取响应的字符输出流将SearchFacesResponse对象转化为JSON字符串并输出。 代码片段 System.out.println(SearchFacesResponse.toJsonString(resp)); response.setC…...

P7 链表 链表头前方插入新节点

目录 前言 01 链表头插入数据 示例代码 02 指定节点前方插入新节点 测试代码 前言 &#x1f3ac; 个人主页&#xff1a;ChenPi &#x1f43b;推荐专栏1: 《C》✨✨✨ &#x1f525; 推荐专栏2: 《 Linux C应用编程&#xff08;概念类&#xff09;_ChenPi的博客-CSDN博客》✨…...

SCAU:主对角线上的元素之和

主对角线上的元素之和 Time Limit:1000MS Memory Limit:65535K 题型: 编程题 语言: G;GCC 描述 输入一个3行4列的整数矩阵&#xff0c;计算并输出主对角线上的元素之和输入格式 3行4列整数矩阵输出格式 主对角线上的元素之和输入样例 1 2 3 4 5 6 7 8 9 10 11 12输出…...

c语言——简单客户端demo

以下是一个简单的C语言客户端示例&#xff0c;用于连接到服务器并发送和接收数据&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <arpa/inet.h> #include <unistd.h…...

日志检索场景ES->Doris迁移最佳实践:函数篇

函数列表 函数&#xff1a;term函数功能说明&#xff1a;查询某个字段里含有某个关键词的文档参数说明&#xff1a;返回值说明&#xff1a;ES使用示例&#xff1a; {"query": {"term": {"title": "blog"}} }Doris使用示例&#xf…...

【高效开发工具系列】jackson入门使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

深入理解网络非阻塞 I/O:NIO

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…...

Hdoop学习笔记(HDP)-Part.07 安装MySQL

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …...

[数据结构]HashSet与LinkedHashSet的底层原理学习心得

我们区分list和set集合的标准是三个&#xff1a;有无顺序&#xff0c;可否重复&#xff0c;有无索引。 list的答案是&#xff1a;有顺序&#xff0c;可重复&#xff0c;有索引。这也就是ArrayList和LinkedList的共性 set的答案是&#xff1a;顺序内部再区分,不可以重复&#xf…...

使用unity开发Pico程序,场景中锯齿问题

1、问题 使用unity【非HDR】开发Pico程序&#xff0c;场景中锯齿问题&#xff0c;设置了unity的抗锯齿和渲染方式,及悬挂抗锯齿的脚本&#xff0c;都不能很好的解决项目中图片、文字的锯齿问题&#xff0c;通过摸索找到了妥善的方法 1、修改项目中图片的 GenerateMIpMaps 为勾…...

Spring | Spring的基本应用

目录: 1.什么是Spring&#xff1f;2.Spring框架的优点3.Spring的体系结构 (重点★★★) :3.1 Core Container (核心容器) ★★★Beans模块 (★★★) : BeanFactoryCore核心模块 (★★★) : IOCContext上下文模块 (★★★) : ApplicationContextContext-support模块 (★★★)SpE…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

Web后端基础(基础知识)

BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务端。 优点&#xff1a;维护方便缺点&#xff1a;体验一般 CS架构&#xff1a;Client/Server&#xff0c;客户端/服务器架构模式。需要单独…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...