欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

EasyExcel實現(xiàn)讀寫Excel文件的示例代碼

 更新時間:2022年08月17日 09:02:32   作者:別團等shy哥發(fā)育  
EasyExcel是阿里巴巴開源的一個excel處理框架,以使用簡單、節(jié)省內(nèi)存著稱。它可以在盡可能節(jié)約內(nèi)存的情況下支持讀寫百M的Excel,所以本文就將利用它實現(xiàn)讀寫Excel文件,感興趣的可以了解一下

1、EasyExcel介紹

EasyExcel是阿里巴巴開源的一個excel處理框架,以使用簡單、節(jié)省內(nèi)存著稱。EasyExcel能大大減少占用內(nèi)存的主要原因是在解析Excel時沒有將文件數(shù)據(jù)一次性全部加載到內(nèi)存中,而是從磁盤上一行行讀取數(shù)據(jù),逐個解析。

2、EasyExcel特點

Java領(lǐng)域解析、生成Excel比較有名的框架有Apache poi、jxl等。但他們都存在一個嚴重的問題就是非常的耗內(nèi)存。如果你的系統(tǒng)并發(fā)量不大的話可能還行,但是一旦并發(fā)上來后一定會OOM或者JVM頻繁的full gc。

EasyExcel采用一行一行的解析模式,并將一行的解析結(jié)果以觀察者的模式通知處理(AnalysisEventListener)

EasyExcel是一個基于Java的簡單、省內(nèi)存的讀寫Excel的開源項目。在盡可能節(jié)約內(nèi)存的情況下支持讀寫百M的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ù)據(jù)字段

@Data
public class User {
    //設(shè)置表頭名稱
    @ExcelProperty(value = "用戶編號")
    private int id;

    //設(shè)置表頭名稱
    @ExcelProperty(value = "用戶名稱")
    private String name;
}

3.3 實現(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)建實體類

這里加上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 實現(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)用方法進行讀操作
        EasyExcel.read(fileName,User.class,new ExcelListener())
                .sheet()
                .doRead();
    }
}

讀excel也沒有什么問題。

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

我的項目中實現(xiàn)效果如下:

點擊按鈕實現(xiàn)excel的導(dǎo)入和導(dǎo)出功能。

以上就是EasyExcel實現(xiàn)讀寫Excel文件的示例代碼的詳細內(nèi)容,更多關(guān)于EasyExcel讀寫Excel的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java簡單實現(xiàn)調(diào)用命令行并獲取執(zhí)行結(jié)果示例

    Java簡單實現(xiàn)調(diào)用命令行并獲取執(zhí)行結(jié)果示例

    這篇文章主要介紹了Java簡單實現(xiàn)調(diào)用命令行并獲取執(zhí)行結(jié)果,結(jié)合實例形式分析了Java調(diào)用ping命令并獲取執(zhí)行結(jié)果相關(guān)操作技巧,需要的朋友可以參考下
    2018-08-08
  • Mysql中備份表的多種方法

    Mysql中備份表的多種方法

    本文給大家分享Mysql中備份表的四種方法,第一種方式是小表的備份,第二種是對整個數(shù)據(jù)庫的備份與恢復(fù),第三種是對某個數(shù)據(jù)表進行備份,每種方式給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • 詳細解讀spring中的@Resource注解

    詳細解讀spring中的@Resource注解

    這篇文章主要介紹了詳細解讀spring中的@Resource注解,此注解來源于JSR規(guī)范(Java?Specification?Requests),其作用是找到依賴的組件注入到應(yīng)用來,它利用了JNDI技術(shù)查找所需的資源,需要的朋友可以參考下
    2023-10-10
  • springboot整合Mybatis、JPA、Redis的示例代碼

    springboot整合Mybatis、JPA、Redis的示例代碼

    這篇文章主要介紹了springboot整合Mybatis、JPA、Redis的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Maven?項目用Assembly打包可執(zhí)行jar包的方法

    Maven?項目用Assembly打包可執(zhí)行jar包的方法

    這篇文章主要介紹了Maven?項目用Assembly打包可執(zhí)行jar包的方法,該方法只可打包非spring項目的可執(zhí)行jar包,需要的朋友可以參考下
    2023-03-03
  • SpringBoot中整合MyBatis-Plus的方法示例

    SpringBoot中整合MyBatis-Plus的方法示例

    這篇文章主要介紹了SpringBoot中整合MyBatis-Plus的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • JAVA HashSet和TreeSet 保證存入元素不會重復(fù)的操作

    JAVA HashSet和TreeSet 保證存入元素不會重復(fù)的操作

    這篇文章主要介紹了JAVA HashSet和TreeSet 保證存入元素不會重復(fù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 解決Spring?Boot應(yīng)用打包后文件訪問問題

    解決Spring?Boot應(yīng)用打包后文件訪問問題

    在Spring Boot項目的開發(fā)過程中,一個常見的挑戰(zhàn)是如何有效地訪問和操作資源文件,本文就來介紹一下解決Spring?Boot應(yīng)用打包后文件訪問問題,感興趣的可以了解一下
    2024-01-01
  • Eclipse中maven異常Updating Maven Project的統(tǒng)一解決方案

    Eclipse中maven異常Updating Maven Project的統(tǒng)一解決方案

    今天小編就為大家分享一篇關(guān)于Eclipse中maven異常Updating Maven Project的統(tǒng)一解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Java編程實現(xiàn)打印螺旋矩陣實例代碼

    Java編程實現(xiàn)打印螺旋矩陣實例代碼

    這篇文章主要介紹了Java編程實現(xiàn)打印螺旋矩陣實例代碼,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12

最新評論