最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java使用FastExcel高效讀取和寫入Excel

 更新時間:2025年11月05日 10:24:53   作者:智_永無止境  
FastExcel 是一個 Java 庫,旨在高效地讀取和寫入 Excel 文件,它最初是 EasyExcel 的分叉版本,旨在提供增強的性能、持續(xù)維護和新功能,同時保持與原始 EasyExcel API 的兼容性,本文給大家介紹了Java如何使用FastExcel高效讀取和寫入Excel,需要的朋友可以參考下

01 引言

FastExcel大家可能不熟悉,但是EasyExcel應該都使用過吧?

FastExcelEasyExcel版本的延續(xù),自從阿里巴巴官方停止維護EasyExcel,EasyExcel的作者繼續(xù)維護起來,并持續(xù)改進優(yōu)化,并更名為FastExcel。

02 簡介

FastExcel 是一個 Java 庫,旨在高效地讀取和寫入 Excel 文件。它最初是 EasyExcel 的分叉版本,旨在提供增強的性能、持續(xù)維護和新功能,同時保持與原始 EasyExcel API 的兼容性。這使其成為在 Java 應用程序中處理 Excel 數據的強大的用戶友好的工具。

FastExcel 通過優(yōu)化內存使用來優(yōu)先考慮高性能,特別是在處理大型數據集時。它通過 SAX 解析機制實現這一點,以流式方式處理基于 XML 的 Excel 文件(XLSX),而無需一次性將整個文件加載到內存中。

官網地址:https://readmex.com/fast-excel/fastexcel/page-151366ada-2ea3-4451-aa3d-98ac90ce4f6e

Github地址:https://github.com/fast-excel/fastexcel

主要特性:

  • 高性能讀寫:FastExcel 專注于性能優(yōu)化,能夠高效處理大規(guī)模的 Excel 數據。相比一些傳統(tǒng)的 Excel 處理庫,它能顯著降低內存占用。
  • 簡單易用:該庫提供了簡潔直觀的 API,使得開發(fā)者可以輕松集成到項目中,無論是簡單的 Excel 操作還是復雜的數據處理都能快速上手。
  • 流式操作:FastExcel 支持流式讀取,將一次性加載大量數據的問題降到最低。這種設計方式在處理數十萬甚至上百萬行的數據時尤為重要。

03 功能概要

業(yè)務項目中,我們經常需要讀寫Excel,如Excel的導入,導出。

3.1 Maven

<dependency>
    <groupId>cn.idev.excel</groupId>
    <artifactId>fastexcel</artifactId>
    <version>1.2.0</version> <!-- Or the latest version -->
</dependency>

3.2 模型類

用來接收Excel數據的實體

@Data
public class Book {

    private String bookName;
    private String author;
    private BigDecimal price;
    private Date saleDate;
}

3.3 讀取Excel文件

API

案例:

@Test
void test01() throws FileNotFoundException {
    File file = ResourceUtils.getFile("classpath:file/demo.xls");
    List<Book> bookList = new ArrayList<>();
    FastExcel.read(file, Book.class, new ReadListener<Book>() {
        @Override
        public void invoke(Book book, AnalysisContext analysisContext) {
            System.out.println("解析數據:" + JSON.toJSONString(book));
            bookList.add(book);
        }

        @Override
        public void doAfterAllAnalysed(AnalysisContext analysisContext) {
            System.out.println("解析完所有數據....");
        }
    }).sheet().doRead();

    System.out.println("bookList:" + JSON.toJSONString(bookList));
}

執(zhí)行結果:

代碼解析:

read(File file, Class head, ReadListener readListener)

  • FastExcel擁有靜態(tài)方法read()
  • file:需要讀取的文件
  • head:需要將文件解析的對象,按照字段的順序和excel的澍勛解析,也可以通過@ExcelProperty指定索引位置
  • readListener:讀取每一條數據的監(jiān)聽器,處理數據也是這里處理的

FastExcel.read(...).sheet().doRead()

  • sheet():默認第一個sheet,也可以傳遞參數指定
  • doRead():開始同步讀取數據,也可以異步讀取數據doReadSync()

3.4 寫入Excel文件

寫入文件之前,我們需要定義模板類的名稱,需要使用到@ExcelProperty

@Data
public class Book {

    @ExcelProperty(value = "書名")
    private String bookName;
    @ExcelProperty(value = "作者")
    private String author;
    @ExcelProperty(value = "價格")
    @NumberFormat("#,###.00")
    private BigDecimal price;
    @ExcelProperty(value = "上架時間")
    @DateTimeFormat("yyyy-MM-dd")
    private Date saleDate;
}

API:

案例:

@Test
void test02() {
    List<Book> bookList = new ArrayList<>();
    for (int i = 0; i < 5; i++) {
        Book item = new Book();
        item.setBookName("Java" + i);
        item.setAuthor("張三" + i);
        item.setPrice(new BigDecimal("2002.35"));
        item.setSaleDate(new Date());
        bookList.add(item);
    }
    FastExcel.write("writeDemo.xls", Book.class).sheet().sheetName("test").doWrite(bookList);
}

執(zhí)行結果:

代碼解析:

write(String pathName, Class head)

  • FastExcel擁有靜態(tài)方法write()
  • pathName:文件要生成的位置
  • head:模板類,這個生成Excel的關鍵

FastExcel.write(...).sheet().sheetName("test").doWrite(bookList)

  • sheet():寫入sheet的位置,默認第一個
  • sheetName("test"):自定義sheet的名稱
  • doWrite():要寫入的數據源

04 小結

FastExcel替我們省去了使用POI的繁瑣,使用起來只關系需要處理的數據即可,非常方便。EasyExcelFastExcel在使用上基本沒有什么區(qū)別,因為同宗同源。

EasyExcel已經停止維護了,你會去遷移到FastExcel上么?作者給出了幾個遷移優(yōu)勢:

以上就是Java使用FastExcel高效讀取和寫入Excel的詳細內容,更多關于Java FastExcel讀取和寫入Excel的資料請關注腳本之家其它相關文章!

相關文章

  • SpringBoot 轉發(fā)請求至指定頁面的操作方法

    SpringBoot 轉發(fā)請求至指定頁面的操作方法

    這篇文章主要介紹了SpringBoot 轉發(fā)請求至指定頁面,需要使用@Controller,不可使用@RestController,@RestController相當于@Controller和@ResponseBody合在一起的作用,本文通過實例代碼詳細講解,需要的朋友可以參考下
    2022-11-11
  • springboot?aop配合反射統(tǒng)一簽名驗證實踐

    springboot?aop配合反射統(tǒng)一簽名驗證實踐

    這篇文章主要介紹了springboot?aop配合反射統(tǒng)一簽名驗證實踐,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot導入mail依賴報錯問題解決

    SpringBoot導入mail依賴報錯問題解決

    這篇文章主要介紹了SpringBoot導入mail依賴報錯問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • SpringBoot集成MyBatisPlus+MySQL的實現

    SpringBoot集成MyBatisPlus+MySQL的實現

    MybatisPlus是國產的第三方插件, 它封裝了許多常用的CURDapi,免去了我們寫mapper.xml的重復勞動,本文主要介紹了SpringBoot集成MyBatisPlus+MySQL的實現,感興趣的可以了解一下
    2023-10-10
  • Spring?boot如何在IDEA中讓一個應用在不同的端口多次啟動詳解

    Spring?boot如何在IDEA中讓一個應用在不同的端口多次啟動詳解

    在開發(fā)過程中,SpringBoot項目的多端口啟動是一個實用的需求,特別是在進行并發(fā)測試或者隔離環(huán)境時,這篇文章主要介紹了Spring?boot如何在IDEA中讓一個應用在不同的端口多次啟動的相關資料,需要的朋友可以參考下
    2026-01-01
  • Java類的加載時機

    Java類的加載時機

    這篇文章介紹了Java類的加載時機,文中通過示例代碼介紹的非常詳細。對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12
  • IDEA Project不顯示/缺失文件問題及解決

    IDEA Project不顯示/缺失文件問題及解決

    在側邊欄的project模式下,如果發(fā)現缺少部分文件,可以嘗試關閉項目,打開項目所在目錄,刪除目錄下的.idea文件夾,然后重新打開項目即可解決
    2024-11-11
  • 淺析SpringBoot微服務中異步調用數據提交數據庫的問題

    淺析SpringBoot微服務中異步調用數據提交數據庫的問題

    這篇文章主要介紹了SpringBoot微服務中異步調用數據提交數據庫的問題,今天本文涉及到的知識點不難,都是很簡單的crud操作,本文結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • java子類調用父類的方法中包含子類重寫的實例方法

    java子類調用父類的方法中包含子類重寫的實例方法

    在本篇文章里小編給大家整理了關于java子類調用父類的方法中包含子類重寫的實例方法以及相關知識點,需要的朋友們可以學習下。
    2019-09-09
  • java必學必會之this關鍵字

    java必學必會之this關鍵字

    java必學必會之this關鍵字,java中this的用法進行了詳細的分析介紹,感興趣的小伙伴們可以參考一下
    2015-12-12

最新評論

长治县| 高邑县| 青川县| 东莞市| 阜新| 河北省| 竹山县| 乡城县| 那曲县| 湛江市| 卢湾区| 信宜市| 大厂| 榕江县| 临江市| 金川县| 苗栗市| 洛隆县| 芜湖市| 泾阳县| 泰顺县| 汉中市| 深州市| 黑山县| 葫芦岛市| 顺义区| 滦南县| 平潭县| 茶陵县| 通山县| 华蓥市| 黄陵县| 普格县| 南木林县| 萝北县| 都昌县| 清原| 陇南市| 大渡口区| 永宁县| 叙永县|