EasyExcel實現(xiàn)讀寫Excel文件的示例代碼
1、EasyExcel介紹
EasyExcel是阿里巴巴開源的一個excel處理框架,以使用簡單、節(jié)省內存著稱。EasyExcel能大大減少占用內存的主要原因是在解析Excel時沒有將文件數(shù)據(jù)一次性全部加載到內存中,而是從磁盤上一行行讀取數(shù)據(jù),逐個解析。
2、EasyExcel特點
Java領域解析、生成Excel比較有名的框架有Apache poi、jxl等。但他們都存在一個嚴重的問題就是非常的耗內存。如果你的系統(tǒng)并發(fā)量不大的話可能還行,但是一旦并發(fā)上來后一定會OOM或者JVM頻繁的full gc。
EasyExcel采用一行一行的解析模式,并將一行的解析結果以觀察者的模式通知處理(AnalysisEventListener)
EasyExcel是一個基于Java的簡單、省內存的讀寫Excel的開源項目。在盡可能節(jié)約內存的情況下支持讀寫百M的Excel。
3、EasyExcel寫操作
3.1 pom中引入xml相關依賴
<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ù)據(jù)字段
@Data public class User { //設置表頭名稱 @ExcelProperty(value = "用戶編號") private int id; //設置表頭名稱 @ExcelProperty(value = "用戶名稱") private String name; }
3.3 實現(xiàn)寫操作
這里先簡單測試下
public class TestWrite { public static void main(String[] args) { //設置文件名稱和路徑 String fileName="I:\\temp\\ggkt\\test.xlsx"; //調用方法 EasyExcel.write(fileName,User.class) .sheet("寫操作") .doWrite(data()); } //循環(huán)設置要添加的數(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)建實體類
這里加上index屬性,index=0表示第一列,以此類推
@Data public class User { //設置表頭名稱 //設置列對應的屬性 @ExcelProperty(value = "用戶編號",index = 0) private int id; //設置表頭名稱 //設置列對應的屬性 @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內容,把每行內容封裝到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 實現(xiàn)讀操作
import com.alibaba.excel.EasyExcel; public class TestRead { public static void main(String[] args) { //設置文件名稱和路徑 String fileName="I:\\temp\\ggkt\\test.xlsx"; //調用方法進行讀操作 EasyExcel.read(fileName,User.class,new ExcelListener()) .sheet() .doRead(); } }
讀excel也沒有什么問題。
到此,excel的讀寫操作就完了,當然這只是在測試類中寫的,我的業(yè)務是實現(xiàn)課程分類列表的導入和導出功能,就需要完善前后端的是實現(xiàn)了,業(yè)務代碼就不放出來了,要不就很繁瑣,大致思想跟上面是一樣的。
我的項目中實現(xiàn)效果如下:
點擊按鈕實現(xiàn)excel的導入和導出功能。
以上就是EasyExcel實現(xiàn)讀寫Excel文件的示例代碼的詳細內容,更多關于EasyExcel讀寫Excel的資料請關注腳本之家其它相關文章!
相關文章
Java簡單實現(xiàn)調用命令行并獲取執(zhí)行結果示例
這篇文章主要介紹了Java簡單實現(xiàn)調用命令行并獲取執(zhí)行結果,結合實例形式分析了Java調用ping命令并獲取執(zhí)行結果相關操作技巧,需要的朋友可以參考下2018-08-08springboot整合Mybatis、JPA、Redis的示例代碼
這篇文章主要介紹了springboot整合Mybatis、JPA、Redis的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09Maven?項目用Assembly打包可執(zhí)行jar包的方法
這篇文章主要介紹了Maven?項目用Assembly打包可執(zhí)行jar包的方法,該方法只可打包非spring項目的可執(zhí)行jar包,需要的朋友可以參考下2023-03-03SpringBoot中整合MyBatis-Plus的方法示例
這篇文章主要介紹了SpringBoot中整合MyBatis-Plus的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09JAVA HashSet和TreeSet 保證存入元素不會重復的操作
這篇文章主要介紹了JAVA HashSet和TreeSet 保證存入元素不會重復的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09Eclipse中maven異常Updating Maven Project的統(tǒng)一解決方案
今天小編就為大家分享一篇關于Eclipse中maven異常Updating Maven Project的統(tǒng)一解決方案,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12