easyExcel快速入门

目录

🧂1.简单介绍

🌭2.快速入门

🥓1.导入依赖

🍿2.导出到excel

🎏3.读入数据 

🎉4.下载 


1.简单介绍

传统操作Excel大多都是利用Apach POl进行操作的,但是POI框架并不完善,使用过程非常繁琐且有较多的缺陷:

  • 动态操作Excel非常繁琐,对于新手来说,很难在短时间内上手
  • 读写时需要占用较大的内存,当数据量大时容易发生内存溢出问题(OOM)

基于上述原因,阿里开源出一款易于上手,且比较节省内存的Excel框架: EasyExcel

官网:官网连接

2.快速入门

1.导入依赖

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

注意:该版本与JDK8较为契合,高版本的JDK可能会出现兼容性问题;

2.导出到excel

  • 1.创建实体类测试
@Data
public class User {@ExcelProperty(value = {"用户信息","姓名"},index = 0)private String userName;@ExcelProperty(value = {"用户信息","密码"},index = 1)private String password;@ExcelProperty(value = {"用户信息","年龄"},index = 2)private Integer age;@ExcelProperty(value = {"用户信息","年纪"},index = 4)private Double grade;@DateTimeFormat("yyyy/MM/dd")@ExcelProperty(value = {"用户信息","日期"},index = 3)private Date time;
}

 使用@ExcelProperty自定义表头

value属性:相同的值标记为统一单元格下

index:表示在第几列显示

受用@DateTimeFormat指定日期格式

  • 2.初始化集合

创建测试对象,封装到集合之中

 /*** 初始化集合* @return*/@Testpublic List<User> init() {ArrayList<User> users = new ArrayList<>();for (int i = 0; i < 10; i++) {User user = new User();user.setAge(19 + i);user.setUserName("tom" + i);user.setPassword("666"+i);user.setGrade(79.5 + i);user.setTime(new Date());users.add(user);}return users;}
  • 3.导出数据

3.读入数据 

   /*** 从excel中读取数据*/@Testpublic void test02() {ArrayList<User> users = new ArrayList<>();EasyExcel.read("E:\\桌面\\excel\\test01.xls", User.class, new AnalysisEventListener<User>() {/*** 逐行读取excel内容,并封装* @param data* @param analysisContext*/@Overridepublic void invoke(User data, AnalysisContext analysisContext) {users.add(data);}@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {System.out.println("读取完毕~~");}}).sheet().doRead();Iterator<User> iterator = users.iterator();while (iterator.hasNext()){System.out.println(iterator.next());}}

4.下载 

参照官网即可

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

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

相关文章

盛水最多的容器 ---- 双指针

题目链接 题目: 分析: 最大容积 即使就是最大面积, 长为下标之差, 宽为两下标对应值的最小值解法一: 暴力枚举: 将每两个数之间的面积都求出来, 找最大值, 时间复杂度较高解法二: 假设我们的数组是[6, 2, 5, 4], 我们先假设最左边和最右边, 即6 和 4 之间是最大面积长a*宽b此…

nginx配置ip_hash负载均衡策略

一、nginx配置ip_hash负载均衡策略 nginx默认的负载均衡策略为轮询&#xff0c;某些场景需要使用ip_hash负载策略&#xff0c;即&#xff1a;同一个ip地址&#xff0c;永远访问nginx后面同一台tomcat。配置示例如下&#xff0c;主要是设置ip_hash&#xff1a; upstream www.ab…

前端JS算法--插入排序

插入排序&#xff08;Insertion Sort&#xff09;是一种简单直观的排序算法&#xff0c;它的工作原理是将一个记录插入到已经排好序的有序表中&#xff0c;从而得到一个新的、记录数增加1的有序表。以下是插入排序算法的基本步骤&#xff1a; 从第一个元素开始&#xff0c;该元…

Pandas数据分析小技巧

Pandas数据分析小技巧&#xff1a;提升数据处理效率与准确性的秘诀 Pandas是一个强大的Python数据分析库&#xff0c;它提供了快速、灵活且富有表现力的数据结构&#xff0c;使得数据清洗、转换、分析等操作变得简单而高效。本文将介绍一些Pandas数据分析的小技巧&#xff0c;…

Go语言切片

基本介绍 Go 语言切片是对数组的抽象&#xff0c;是一种长度可变的动态数组。 基本用法 切片声明 声明一个未指定大小的数组来定义切片 var s []int或者使用 make 函数来创建切片 var slice1 []type make([]type, len)// 使用简短声明slice1 : make([]type, len)切片初始化…

Kamailio 的 uuid_kill

Kamailio 是否有类似 FreeSWITCH 的 uuid_kill 命令 试了试&#xff0c;发现还真的有 如果正在振铃&#xff0c;那么 tm.cancel 可以结束呼叫&#xff0c;参考链接&#xff1a; https://kamailio.org/docs/modules/5.5.x/modules/tm.html#tm.rpc.cancel 如果已经应答&#…

三招教你成为朋友圈运营高手,赶紧get起来!

朋友圈作为一个重要的营销推广渠道&#xff0c;是能够为我们带来很多收益的。今天就给大家分享朋友圈运营的三个技巧&#xff0c;快快Get起来吧&#xff01; 第一招&#xff1a;明确人设定位 要在朋友圈里脱颖而出&#xff0c;首先我们需要明确自己的人设定位。选择一个与自己…

P1141 01迷宫(BFS+简单连通块优化解析)

01迷宫 题目描述 有一个仅由数字 0 0 0 与 1 1 1 组成的 n n n \times n nn 格迷宫。若你位于一格 0 0 0 上&#xff0c;那么你可以移动到相邻 4 4 4 格中的某一格 1 1 1 上&#xff0c;同样若你位于一格 1 1 1 上&#xff0c;那么你可以移动到相邻 4 4 4 格中的某一…

python 背包问题 动态规划

问题分析子问题界定&#xff1a;由参数 k 和 y 界定k&#xff1a;考虑对物品1, 2, … , k 的选择 y&#xff1a;背包总重量不超过 y 原始输入&#xff1a;k n, y b 子问题计算顺序&#xff1a; k 1, 2, … , n 对于给定的 k&#xff0c;y 1, 2, … , b 定义问题 假设有 n 个…

任务修复实例(4)

Quest Name War Dance | 战争之舞 Quest ID 24540 -- Add Creature INSERT INTO world.creature (guid, id, map, zoneId, areaId, spawnDifficulties, phaseUseFlags, PhaseId, PhaseGroup, terrainSwapMap, modelid, equipment_id, position_x, position_y, position_z, o…

【Spring】IOC/DI中常用的注解@Order与@DependsOn

目录 1、Order 注解改变Bean自动注入的顺序 1.1、了解SpringBootTest注解 1.2、Order 注解改变Bean自动注入的顺序 2、DependsOn 改变Bean的创建顺序 1、Order 注解改变Bean自动注入的顺序 在sping中&#xff0c;通过IOC&#xff08;控制反转&#xff09;和DI&#xff08;依…

文本向量化模型新突破——acge_text_embedding勇夺C-MTEB榜首

在人工智能的浪潮中&#xff0c;以GPT4、Claude3、Llama 3等大型语言模型&#xff08;LLM&#xff09;无疑是最引人注目的潮头。这些模型通过在海量数据上的预训练&#xff0c;学习到了丰富的语言知识和模式&#xff0c;展现了出惊人的能力。在支撑这些大型语言模型应用落地方面…

hbase建表时设置预分区

一.hbase rowkey设计的原则 遵循唯一性,散列,不应过长等原则 二.rowkey常用的设计 1.reverse反转 2.salt加盐 3.hash散列 三.hbase建表预分区,指定3个rowkey,分成4个region 在Hbase中,预分区是一种优化手段,用于在创建表时提前规划好Region的分布,以提高数据写入的效率和查询…

【ARMv9 DSU-120 系列 -- CHI Interface】

文章目录 DSU-120 CHI BUSAddress Target Groups配置步骤映射和管理Hashing for CHI transaction distribution散列过程和地址目标组识别散列函数定义两个地址目标组的散列四个地址目标组的散列八个地址目标组的散列DSU-120 CHI BUS DSU-120(DynamIQ™共享单元-120)在构建时…

文件操作(1)

为什么使⽤⽂件&#xff1f; 如果没有⽂件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;等再次运⾏程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进⾏持久化的…

各平台奇怪问题备忘录

微信小程序 小程序报错Page 页面路径 has not been register yet 描述&#xff1a;uniapp做微信小程序开发时&#xff0c;新增某页面后&#xff0c;小程序跳转该页面报错Page 页面路径 has not been register yet 已知&#xff1a;page.json已添加该页面&#xff0c;小程序a…

实验二:Huggingface数据集页面遍历爬取

准备&#xff1a; 获取所有的标签和链接&#xff0c;并存储在json文件中 main.py from bs4 import BeautifulSoup import requests import extract import Into_Tag import read import json def get_info(filepath):try:with open(filepath,r,encodingutf-8)as file:conten…

B端设计实战:基于角色属性的权限设计

编辑导读:“权限控制”是中后台的基础能力,用于管控操作人员在平台内可做的事项内容。即通过权限控制,可以决定哪些人在平台内可以做哪些事。本文作者围绕角色&属性的权限设计展开分析,希望对你有帮助。 Hello,我是一名交互设计师。 随着3月暖春的即将到来,苏州的疫…

Java设计模式中策略模式

策略模式是一种行为型设计模式&#xff0c;它允许在运行时选择算法的行为。这种模式定义了一系列算法&#xff0c;并使这些算法可以相互替换&#xff0c;使得算法的变化独立于使用算法的客户。 以下是策略模式的一般结构&#xff1a; Context&#xff08;上下文&#xff09;&a…

bugku-杂项-社工进阶收集

下载附件 得到图片 利用百度地图查找 这里得到地点名称大雁塔音乐喷泉 陕西省西安市&#xff0c;大雁塔北广场 打开高德地图 来到大雁塔北广场 因为在北广场&#xff0c;所以地铁站为大雁塔站 开始分析 坐七站到大雁塔站&#xff0c;即始发站为韦曲南站 因为始发站离她家800米&…