EasyExcel實(shí)現(xiàn)讀寫Excel文件的示例代碼
1、EasyExcel介紹
EasyExcel是阿里巴巴開源的一個excel處理框架,以使用簡單、節(jié)省內(nèi)存著稱。EasyExcel能大大減少占用內(nèi)存的主要原因是在解析Excel時沒有將文件數(shù)據(jù)一次性全部加載到內(nèi)存中,而是從磁盤上一行行讀取數(shù)據(jù),逐個解析。
2、EasyExcel特點(diǎn)
Java領(lǐng)域解析、生成Excel比較有名的框架有Apache poi、jxl等。但他們都存在一個嚴(yán)重的問題就是非常的耗內(nèi)存。如果你的系統(tǒng)并發(fā)量不大的話可能還行,但是一旦并發(fā)上來后一定會OOM或者JVM頻繁的full gc。
EasyExcel采用一行一行的解析模式,并將一行的解析結(jié)果以觀察者的模式通知處理(AnalysisEventListener)
EasyExcel是一個基于Java的簡單、省內(nèi)存的讀寫Excel的開源項(xiàng)目。在盡可能節(jié)約內(nèi)存的情況下支持讀寫百M(fèi)的Excel。
3、EasyExcel寫操作
3.1 pom中引入xml相關(guān)依賴
<dependencies>
<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
</dependencies>

3.2 創(chuàng)建實(shí)體類
設(shè)置表頭和添加的數(shù)據(jù)字段
@Data
public class User {
//設(shè)置表頭名稱
@ExcelProperty(value = "用戶編號")
private int id;
//設(shè)置表頭名稱
@ExcelProperty(value = "用戶名稱")
private String name;
}
3.3 實(shí)現(xiàn)寫操作
這里先簡單測試下
public class TestWrite {
public static void main(String[] args) {
//設(shè)置文件名稱和路徑
String fileName="I:\\temp\\ggkt\\test.xlsx";
//調(diào)用方法
EasyExcel.write(fileName,User.class)
.sheet("寫操作")
.doWrite(data());
}
//循環(huán)設(shè)置要添加的數(shù)據(jù),最終封裝到list集合中
private static List<User> data() {
List<User> list = new ArrayList<User>();
for (int i = 0; i < 10; i++) {
User data = new User();
data.setId(i);
data.setName("lucy"+i);
list.add(data);
}
return list;
}
}


讀操作沒有任何問題。
4、EasyExcel讀操作
4.1 創(chuàng)建實(shí)體類
這里加上index屬性,index=0表示第一列,以此類推
@Data
public class User {
//設(shè)置表頭名稱
//設(shè)置列對應(yīng)的屬性
@ExcelProperty(value = "用戶編號",index = 0)
private int id;
//設(shè)置表頭名稱
//設(shè)置列對應(yīng)的屬性
@ExcelProperty(value = "用戶名稱",index = 1)
private String name;
}
4.2 創(chuàng)建讀取操作的監(jiān)聽器
package com.atguigu.excel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import java.util.Map;
public class ExcelListener extends AnalysisEventListener<User> {
//一行一行讀取excel內(nèi)容,把每行內(nèi)容封裝到User對象中
//從excel第二行還是讀取(第一行是表頭)
@Override
public void invoke(User user, AnalysisContext context) {
System.out.println(user);
}
//讀取excel表頭信息
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
System.out.println("表頭:"+headMap);
}
//讀取完成后執(zhí)行
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
}
}
4.3 實(shí)現(xiàn)讀操作
import com.alibaba.excel.EasyExcel;
public class TestRead {
public static void main(String[] args) {
//設(shè)置文件名稱和路徑
String fileName="I:\\temp\\ggkt\\test.xlsx";
//調(diào)用方法進(jìn)行讀操作
EasyExcel.read(fileName,User.class,new ExcelListener())
.sheet()
.doRead();
}
}

讀excel也沒有什么問題。
到此,excel的讀寫操作就完了,當(dāng)然這只是在測試類中寫的,我的業(yè)務(wù)是實(shí)現(xiàn)課程分類列表的導(dǎo)入和導(dǎo)出功能,就需要完善前后端的是實(shí)現(xiàn)了,業(yè)務(wù)代碼就不放出來了,要不就很繁瑣,大致思想跟上面是一樣的。
我的項(xiàng)目中實(shí)現(xiàn)效果如下:

點(diǎn)擊按鈕實(shí)現(xiàn)excel的導(dǎo)入和導(dǎo)出功能。
以上就是EasyExcel實(shí)現(xiàn)讀寫Excel文件的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于EasyExcel讀寫Excel的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java實(shí)現(xiàn)九九乘法表的完整實(shí)例(對齊版)
這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)九九乘法表(對齊版)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
SpringBoot+fileUpload獲取文件上傳進(jìn)度
這篇文章主要為大家詳細(xì)介紹了SpringBoot+fileUpload獲取文件上傳進(jìn)度,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-08-08
idea中安裝VisualVM監(jiān)控jvm的圖文教程
這篇文章主要介紹了idea中安裝VisualVM監(jiān)控jvm的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
MybatisPlus實(shí)現(xiàn)分頁查詢和動態(tài)SQL查詢的示例代碼
本文主要介紹了MybatisPlus實(shí)現(xiàn)分頁查詢和動態(tài)SQL查詢的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
SpringBoot整合Mail輕松實(shí)現(xiàn)郵件自動推送功能
在項(xiàng)目中經(jīng)常會遇到SpringBoot推送消息的業(yè)務(wù),除了站內(nèi)推送通知,郵件推送也是一種常見的方式,本文小編就給大家介紹了SpringBoot整合Mail輕松實(shí)現(xiàn)郵件自動推送功能,需要的朋友可以參考下2024-12-12
mybatis執(zhí)行錯誤但sql執(zhí)行正常問題
這篇文章主要介紹了mybatis執(zhí)行錯誤但sql執(zhí)行正常問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
SpringBoot項(xiàng)目如何打war包問題詳解
傳統(tǒng)的部署方式:將項(xiàng)目打成war包,放入tomcat的webapps目錄下面,啟動tomcat,即可訪問.文中有非常詳細(xì)的介紹,對正在學(xué)習(xí)springboot的小伙伴很有幫助,需要的朋友可以參考下2021-05-05

